| #(adr0 + ax0) = # ndx, adr ∈ adr0 + ax0, ∀ ndx, adr, fs. # ax0 = # ndx ∧ adr ∈ ax0 → fs[ax0, ndx][adr] = ndx[pos(adr, ax0)] ∨ dups(ax0) ⊦ fs[adr0 + ax0, ndx][adr] = ndx[pos(adr, adr0 + ax0)], dups(adr0 + ax0) |
# ax0 + 1 = # ndx, ∀ ndx0, adr1, fs0. # ax0 = # ndx0 ∧ adr1 ∈ ax0 → fs0[ax0, ndx0][adr1] = ndx0[pos(adr1, ax0)], adr = adr0 ∨ adr ∈ ax0 ⊦ fs[adr0 ' + ax0, ndx][adr] = ndx[pos(adr, adr0 ' + ax0)], dups(ax0), adr0 ∈ ax0
Used simplifier rules: ⊦ dups(adr ' + ax) ↔ dups(ax) ∨ adr ∈ ax; (ws)% ⊦ adr ∈ adr0 ' + ax ↔ adr = adr0 ∨ adr ∈ ax; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ m +1 = m + 1; (s)% ⊦ #(adr ' + ax) = (# ax)+1; (s)% ⊦ adr + ax = adr ' + ax; (s)