| lpt[n0] = mklp(m, m0, LP_FREE, m1), replay-lpt(lpt, nx, n)[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]) ) )
Used simplifier rules: replay-lpt-at-above: n ≤ m, m < # lpt ⊦ replay-lpt(lpt, nx, n)[m] = lpt[m];%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat% ⊦ mklp(n2, n3, lpf, m).flags = lpf; (s)%⊦ mklp(m, m0, lpf, m1) = mklp(m2, m3, lpf0, m4) ↔ m = m2 ∧ m0 = m3 ∧ lpf = lpf0 ∧ m1 = m4; (ws)% ⊦ m < n → n ≠ 0; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ m < n ↔ ¬ n ≤ m; (ss)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ m < n → m ≤ n; (s) Used terms: n0, n, nx, lpt