| kar[m3] = key-index(natkey, m7), lpt[n] = mklp(m0, m1, lpf0, m2), lpt[n, mklp(n0, n1, lpf1, n2)][m7] = mklp(m4, m5, lpf, m6), keyset(bin-heap(kar, m)) = gc-heap(lpt, nx, # lpt), 2exp-size(# kar), m3 < # kar, n < # lpt, m3 < m, heap-order(kar, m), no-dups-idx(kar, m), m ≤ # kar, m3 < m → kar[m3].idx < # lpt ∧ lpt[kar[m3].idx].gcheapidx = m3 ⊦ lpf0 = LP_GROUP_NODES, m7 < # lpt ∧ m6 = m3 |
lpt[n] = mklp(m0, m1, lpf0, m2), lpt[n, mklp(n0, n1, lpf1, n2)][m7] = mklp(m4, m5, lpf, m6), kar[lpt[m7].gcheapidx] = key-index(natkey, m7), keyset(bin-heap(kar, m)) = gc-heap(lpt, nx, # lpt), 2exp-size(# kar), m7 < # lpt, n < # lpt, lpt[m7].gcheapidx < m, lpt[m7].gcheapidx < # kar, heap-order(kar, m), no-dups-idx(kar, m), m ≤ # kar ⊦ lpf0 = LP_GROUP_NODES, m6 = lpt[m7].gcheapidx
Used simplifier rules: fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat% ⊦ key-index(natkey, m).idx = m; (s)%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic