| replay-lpt(lpt, nx, n)[n0] = mklp(m, m0, LP_FREE, m1), lpt[n0] = mklp(m2, m3, lpf, m4), n0 < # lpt, n ≤ # lpt, lpf = LP_FREE → m2 = 0 ⊦ m = 0 |
m < n, n ≤ # lpt ⊦ replay-lpt(lpt, nx, n)[m] = (lpt[m].flags = LP_FREE ∨ m ∈ nx ⊃ lpt[m] ;(lpt[m].flags = LP_INDEX_NODES ∧ lpt[m].ref-size ≠ 0 ⊃ lpt[m].size:= LEB_SIZE ;(lpt[m].ref-size = 0 ⊃ mklp(0, 0, LP_FREE, lpt[m].gcheapidx);lpt[m]) ) )
(lpt[n0].flags = LP_FREE ∨ n0 ∈ nx ⊃ lpt[n0] ;(lpt[n0].flags = LP_INDEX_NODES ∧ lpt[n0].ref-size ≠ 0 ⊃ lpt[n0].size:= LEB_SIZE ;(lpt[n0].ref-size = 0 ⊃ mklp(0, 0, LP_FREE, lpt[n0].gcheapidx);lpt[n0]) ) ) = mklp(m, m0, LP_FREE, m1), lpt[n0] = mklp(m2, m3, lpf, m4), n0 < # lpt, n0 < n, n ≤ # lpt, lpf = LP_FREE → m2 = 0 ⊦ m = 0
Used simplifier rules: replay-lpt-at-above: n ≤ m, m < # lpt ⊦ replay-lpt(lpt, nx, n)[m] = lpt[m];% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ m < n ↔ ¬ n ≤ m; (ss)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat%⊦ mklp(m, m0, lpf, m1) = mklp(m2, m3, lpf0, m4) ↔ m = m2 ∧ m0 = m3 ∧ lpf = lpf0 ∧ m1 = m4; (ws)% ⊦ m < n → m ≤ n; (s) Used terms: n0, n, nx, lpt