| # 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), inv(gstore2 \ ginval), inv(groupblock(gndx1 + gndx, lax, m)), n ∈ gstore2 ⊦ ⟪if gndx2.last.end then jvalid := true else {ax := ax.butlast; gndx2 := gndx2.butlast}⟫ ( (∃ 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) ∧ (jvalid → # gndx2 = valid-group-nodes(gndx2 + gndx3))) ∧ (jvalid ⊃ 0;# gndx2) < # gndx1), gndx1 = [], n ∈ ginval |
# 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(groupblock(gndx1 + gndx, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2 ⊦ ⟪jvalid := true⟫ ( (∃ 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) ∧ (jvalid → # gndx2 = valid-group-nodes(gndx2 + gndx3))) ∧ (jvalid ⊃ 0;# gndx2) < # gndx1), gndx1 = [], gndx2 = [], n ∈ ginval
# 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), inv(groupblock(gndx1 + gndx, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2 ⊦ ⟪ax := ax.butlast; gndx2 := gndx2.butlast⟫ ( (∃ 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) ∧ (jvalid → # gndx2 = valid-group-nodes(gndx2 + gndx3))) ∧ (jvalid ⊃ 0;# gndx2) < # gndx1), gndx1 = [], gndx2 = [], gndx2.last.end, n ∈ ginval
# lax = # gndx1 + # gndx, jvalid ↔ false, gstore2[n] = groupblock(gndx1 + gndx, lax, m), ax = ax0 + prefixn(# gndx1, lax).to-adr(n), gndx2 = [], gndx2 = gndx1, valid-group-nodes(gndx1) = valid-group-nodes(gndx1 + gndx), inv(groupblock(gndx1 + gndx, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2 ⊦ gndx1 = [], n ∈ ginval