| freelist-cons(lpt, n ' + freelist) ⊦ lpf = LP_FREE, freelist-cons(lpt[n, mklp(m0, m1, lpf, m2)], freelist) |
∀ n0. n0 < # lpt ∧ lpt[n0].flags = LP_FREE ↔ n0 = n ∨ n0 ∈ freelist ⊦ n0 < # lpt ∧ lpt[n, mklp(m0, m1, lpf, m2)][n0].flags = LP_FREE ↔ n0 ∈ freelist, lpf = LP_FREE, dups(freelist), n ∈ freelist
Used simplifier rules: freelist-cons: ⊦ freelist-cons(lpt, freelist) ↔ ¬ dups(freelist) ∧ (∀ n. n < # lpt ∧ lpt[n].flags = LP_FREE ↔ n ∈ freelist);% ⊦ # lpt[n, lp] = # lpt; (s)% ⊦ n ∈ n0 ' + nx ↔ n = n0 ∨ n ∈ nx; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ dups(n ' + nx) ↔ n ∈ nx ∨ dups(nx); (s)