| lpt[n0] = mklp(m3, m4, lpf0, m5), lpt[m] = mklp(m0, m1, lpf, m2), n0 < # lpt, m < # lpt, m ≤ n0 ⊦ (lpf0 = LP_FREE ∨ n0 ∈ nx ⊃ replay-lpt(lpt, nx, n0) ;(lpf0 = LP_INDEX_NODES ∧ m3 ≠ 0 ⊃ replay-lpt(lpt, nx, n0)[n0, mklp(m3, LEB_SIZE, LP_INDEX_NODES, m5)] ;(m3 = 0 ⊃ replay-lpt(lpt, nx, n0)[n0, mklp(0, 0, LP_FREE, m5)];replay-lpt(lpt, nx, n0)) ) ) [m ] = (lpf = LP_FREE ∨ m ∈ nx ⊃ mklp(m0, m1, lpf, m2) ;(lpf = LP_INDEX_NODES ∧ m0 ≠ 0 ⊃ mklp(m0, LEB_SIZE, LP_INDEX_NODES, m2);(m0 = 0 ⊃ mklp(0, 0, LP_FREE, m2);mklp(m0, m1, lpf, m2))) ), m < n0 |
lpt[n0] = mklp(m3, m4, lpf0, m5), n0 < # lpt ⊦ (lpf0 = LP_FREE ∨ n0 ∈ nx ⊃ replay-lpt(lpt, nx, n0) ;(lpf0 = LP_INDEX_NODES ∧ m3 ≠ 0 ⊃ replay-lpt(lpt, nx, n0)[n0, mklp(m3, LEB_SIZE, LP_INDEX_NODES, m5)] ;(m3 = 0 ⊃ replay-lpt(lpt, nx, n0)[n0, mklp(0, 0, LP_FREE, m5)];replay-lpt(lpt, nx, n0)) ) ) [n0 ] = (lpf0 = LP_FREE ∨ n0 ∈ nx ⊃ mklp(m3, m4, lpf0, m5) ;(lpf0 = LP_INDEX_NODES ∧ m3 ≠ 0 ⊃ mklp(m3, LEB_SIZE, LP_INDEX_NODES, m5);(m3 = 0 ⊃ mklp(0, 0, LP_FREE, m5);mklp(m3, m4, lpf0, m5))) )
Used simplifier rules: ⊦ mklp(m, m0, lpf, m1) = mklp(m2, m3, lpf0, m4) ↔ m = m2 ∧ m0 = m3 ∧ lpf = lpf0 ∧ m1 = m4; (ws)% ⊦ m ≤ m; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic% ⊦ m ≤ n → (n ≤ m ↔ m = n); (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)