| # lpt1 = # lpt0, n < # lpt0 ∧ lpf0 = LP_INDEX_NODES ↔ n ∈ istore, lpt1[n] = mklp(m3, m4, lpf0, m5), lpt0[n] = mklp(m0, m1, lpf, m2), istore[n] = indexblock(indx, lax, m), n < # lpt0 → m0 = m3 ∧ m1 = m4 ∧ lpf = lpf0, n ∈ istore → avol[n].mapped? ∧ abs-nodes(avol[n].data, indx, lax, m4 = LEB_SIZE) ∧ (m4 ≠ LEB_SIZE → m4 = # avol[n].data) ∧ m3 = m ⊦ (n < # lpt0 ∧ lpf = LP_INDEX_NODES ↔ n ∈ istore) ∧ (n ∈ istore → avol[n].mapped? ∧ abs-nodes(avol[n].data, indx, lax, m1 = LEB_SIZE) ∧ (m1 ≠ LEB_SIZE → m1 = # avol[n].data) ∧ m0 = m) |
Used simplifier rules: ⊦ aleb.mapped? ↔ (∃ buf. aleb = mapped(buf)); (as)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%abs-nodes-elems-adr-length: ⊦ abs-nodes(buf, indx, lax, weak) → # indx = # lax; (forward) from specification abs-list[encoding-index-node]% ⊦ m < n → n ≠ 0; (s)% ⊦ mapped(buf).data = buf; (s)% ⊦ mapped(buf).mapped?; (s)% ⊦ ¬ n ∈ istore → istore[n] = (∅)[n]; (s)