| # lpt = # avol1, # avol0 = # avol1, (lpt[n].flags = LP_FREE ∨ n ∈ nx ⊃ lpt[n] ;(lpt[n].flags = LP_INDEX_NODES ∧ lpt[n].ref-size ≠ 0 ⊃ lpt[n].size:= LEB_SIZE;(lpt[n].ref-size = 0 ⊃ mklp(0, 0, LP_FREE, lpt[n].gcheapidx);lpt[n])) ) = mklp(m, m1, LP_INDEX_NODES, m2), lpt[n] = mklp(m0, m3, lpf, m4), istore[n] = indexblock(indx, lax, m), n < # avol1, abs-leb(avol0[n], indexblock(indx, lax, m), mklp(m, m1, LP_INDEX_NODES, m2)), n ∈ istore, # avol1 ≤ # lpt, n ∈ nx ∨ m0 ≠ 0 ∨ lpf = LP_FREE → avol0[n] = avol1[n] ⊦ m = 0, abs-leb(avol1[n], indexblock(indx, lax, m), mklp(m, m1, LP_INDEX_NODES, m2)) |
# lpt = # avol1, # avol0 = # avol1, (lpf = LP_FREE ∨ n ∈ nx ⊃ mklp(m0, m3, lpf, m4) ;(lpf = LP_INDEX_NODES ∧ m0 ≠ 0 ⊃ mklp(m0, LEB_SIZE, LP_INDEX_NODES, m4);(m0 = 0 ⊃ mklp(0, 0, LP_FREE, m4);mklp(m0, m3, lpf, m4))) ) = mklp(m, m1, LP_INDEX_NODES, m2), lpt[n] = mklp(m0, m3, lpf, m4), istore[n] = indexblock(indx, lax, m), n < # avol1, abs-leb(avol0[n], indexblock(indx, lax, m), mklp(m, m1, LP_INDEX_NODES, m2)), n ∈ istore, n ∈ nx ∨ m0 ≠ 0 ∨ lpf = LP_FREE → avol0[n] = avol1[n] ⊦ m = 0, abs-leb(avol1[n], indexblock(indx, lax, m), mklp(m, m1, LP_INDEX_NODES, m2))
Used simplifier rules: ⊦ m ≤ m; (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