| # lax = # gndx1 + # gndx, jvalid ↔ false, gstore2[n] = groupblock(gndx1 + gndx, lax, m), ax = ax0 + prefixn(# gndx1, lax).to-adr(n), gndx2 = gndx1, valid-group-nodes(gndx1) = valid-group-nodes(gndx1 + gndx), gndx2.last.end, inv(gstore2 \ ginval), inv(groupblock(gndx1 + gndx, lax, m)), n ∈ gstore2 ⊦ gndx1 = [], gndx2 = [], n ∈ ginval, (∃ gndx3. # lax = # gndx2 + # gndx3 ∧ gndx1 + gndx = gndx2 + gndx3 ∧ ax = ax0 + prefixn(# gndx2, lax).to-adr(n) ∧ valid-group-nodes(gndx2) = valid-group-nodes(gndx2 + gndx3) ∧ (true → # gndx2 = valid-group-nodes(gndx2 + gndx3))) ∧ (true ⊃ 0;# gndx2) < # gndx1 |
# lax = # gndx1 + # gndx, gstore2[n] = groupblock(gndx1 + gndx, lax, m), valid-group-nodes(gndx1) = valid-group-nodes(gndx1 + gndx), gndx1.last.end, inv(groupblock(gndx1 + gndx, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2 ⊦ # gndx1 = valid-group-nodes(gndx1), gndx1 = [], n ∈ ginval
Used simplifier rules: ⊦ # gndx = 0 ↔ gndx = []; (s)% ⊦ 0 < m ↔ m ≠ 0; (s)%a: ⊦ (gndx + gndx0) + gndx1 = gndx + gndx0 + gndx1; from specification list[group-store]% ⊦ gndx + gndx0 = gndx + gndx1 ↔ gndx0 = gndx1; (s)