| # lax = # gndx1 + # gndx, gstore2[n] = groupblock(gndx1 + gndx, lax, m), valid-group-nodes(gndx1) = valid-group-nodes(gndx1 + gndx), inv(gstore2 \ ginval), inv(groupblock(gndx1 + gndx, lax, m)), n ∈ gstore2 ⊦ ax0 + prefixn(# gndx1, lax).to-adr(n) = [], gndx1 = [], gndx1.last.end, n ∈ ginval, ∃ gndx0. # gndx1 + # gndx0 = 1 + # lax ∧ gndx1 + gndx = gndx1.butlast + gndx0 ∧ (ax0 + prefixn(# gndx1, lax).to-adr(n)).butlast = ax0 + prefixn(# gndx1 - 1, lax).to-adr(n) ∧ valid-group-nodes(gndx1.butlast) = valid-group-nodes(gndx1.butlast + gndx0) |
# lax = # gndx1 + # gndx, # gndx1 = m0 + 1, gstore2[n] = groupblock(gndx1 + gndx, lax, m), valid-group-nodes(gndx1) = valid-group-nodes(gndx1 + gndx), inv(groupblock(gndx1 + gndx, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2 ⊦ # gndx1 = 0, ax0 + prefixn(# gndx1, lax).to-adr(n) = [], gndx1 = [], gndx1.last.end, n ∈ ginval, ∃ gndx0. # gndx1 + # gndx0 = 1 + # lax ∧ gndx1 + gndx = gndx1.butlast + gndx0 ∧ (ax0 + prefixn(# gndx1, lax).to-adr(n)).butlast = ax0 + prefixn(m0, lax).to-adr(n) ∧ valid-group-nodes(gndx1.butlast) = valid-group-nodes(gndx1.butlast + gndx0)
Used simplifier rules: ⊦ # gndx = 0 ↔ gndx = []; (s)%n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: # gndx1, m0