| (m4 < # lpt ⊃ (lpt[m4].ref-size = 0 ∧ lpt[m4].flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lpt[m4].gcheapidx);lpt[m4]);lpt[m4]) = mklp(m1, m2, lpf, m3), lpt[m4] = mklp(m0, m5, lpf0, m6), kar[m6] = key-index(natkey, m4), 2exp-size(# kar), m4 < # lpt, m6 < m, m6 < # kar, heap-order(kar, m), no-dups-idx(kar, m), m ≤ # kar ⊦ m3 = m6 |
(m0 = 0 ∧ lpf0 ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, m6);mklp(m0, m5, lpf0, m6)) = mklp(m1, m2, lpf, m3), lpt[m4] = mklp(m0, m5, lpf0, m6), kar[m6] = key-index(natkey, m4), 2exp-size(# kar), m6 < # kar, m4 < # lpt, m6 < m, heap-order(kar, m), no-dups-idx(kar, m), m ≤ # kar ⊦ m3 = m6
Used simplifier rules: ⊦ mklp(n2, n3, lpf, m).gcheapidx = m; (s)% ⊦ mklp(n2, n3, lpf, m).flags = lpf; (s)% ⊦ mklp(n2, n3, lpf, m).ref-size = n2; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat