| (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 |
(lpf = LP_FREE ∨ n0 ∈ nx ⊃ mklp(m2, m3, lpf, m4) ;(lpf = LP_INDEX_NODES ∧ m2 ≠ 0 ⊃ mklp(m2, LEB_SIZE, LP_INDEX_NODES, m4);(m2 = 0 ⊃ mklp(0, 0, LP_FREE, m4);mklp(m2, m3, lpf, m4))) ) = 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: ⊦ m < n → n ≠ 0; (s)% ⊦ mklp(n2, n3, lpf, m).gcheapidx = m; (s)% ⊦ mklp(m, m0, lpf, m1).size:= m3 = mklp(m, m3, lpf, m1); (s)% ⊦ mklp(n2, n3, lpf, m).ref-size = n2; (s)% ⊦ mklp(n2, n3, lpf, m).flags = lpf; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic