| # lpt1 = n1 + n0, lpt1[n0] = mklp(m, m0, LP_GROUP_NODES, m1), gc-heap(lpt2, log, n0) = keyset(gch), keyset(gch0) = gc-heap(lpt2, log, n0) ++ key-index(m, n0), bin-heap-inv(gch, lpt1), bin-heap-inv(gch0, lpt), id-idx(lpt2, lpt1), id-idx(lpt1, lpt), ∀ ki. ki ∈ gc-heap(lpt2, log, ki.idx) → ki.idx ≠ n0 ⊦ n1 = 0, n0 ∈ log, n0 + 1 ≤ # lpt ∧ gc-heap(lpt2, log, n0 + 1) = keyset(gch0) ∧ # lpt < n1 + n0 + 1 |
# lpt1 = n1 + n0, lpt1[n0] = mklp(m, m0, LP_GROUP_NODES, m1), gc-heap(lpt2, log, n0) = keyset(gch), keyset(gch0) = gc-heap(lpt2, log, n0) ++ key-index(m, n0), bin-heap-inv(gch, lpt1), bin-heap-inv(gch0, lpt), id-idx(lpt2, lpt1), id-idx(lpt1, lpt), # lpt ≤ n1 + n0, ∀ ki. ki ∈ gc-heap(lpt2, log, ki.idx) → ki.idx ≠ n0 ⊦ n1 = 0, n0 ∈ log, gc-heap(lpt2, log, n0 + 1) = gc-heap(lpt2, log, n0) ++ key-index(m, n0) ∧ n0 < # lpt
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ id-idx(lpt0, lpt1) → ¬ # lpt0 < # lpt1; (s)% ⊦ m < n → n ≠ 0; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m < n + 1 ↔ ¬ n < m; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + 1 ≤ n ↔ m < n; (s)