| # lpt = # avol0, lpt[n] = mklp(m0, m1, lpf, m2), n < # lpt, abs-istore(avol0, lpt, istore), id○(avol0, avol1, n) ⊦ lpf = LP_INDEX_NODES, abs-istore(avol1, lpt, istore) |
# lpt = # avol1, # avol0 = # avol1, lpt[n] = mklp(m0, m1, lpf, m2), n < # avol1, id○(avol0, avol1, n), ∀ n. (n < # avol1 ∧ lpt[n].flags = LP_INDEX_NODES ↔ n ∈ istore) ∧ (n ∈ istore → abs-leb(avol0[n], istore[n], lpt[n]) ∧ lpt[n].ref-size = istore[n].ref-size) ⊦ lpf = LP_INDEX_NODES, (n0 < # avol1 ∧ lpt[n0].flags = LP_INDEX_NODES ↔ n0 ∈ istore) ∧ (n0 ∈ istore → abs-leb(avol1[n0], istore[n0], lpt[n0]) ∧ lpt[n0].ref-size = istore[n0].ref-size)
Used simplifier rules: abs-istore-def: ⊦ abs-istore(avol, lpt, istore) ↔ (∀ n. (n < # lpt ∧ lpt[n].flags = LP_INDEX_NODES ↔ n ∈ istore) ∧ ( n ∈ istore → abs-leb(avol[n], istore[n], lpt[n]) ∧ lpt[n].ref-size = istore[n].ref-size));% ⊦ m < n → n ≠ 0; (s)%idexcept-size: ⊦ id○(avol, avol0, n) → # avol = # avol0; (forward) from specification array-copy[avolume]%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic