| jvalid ↔ jvalid0, gstore2[n] = groupblock(gndx0, lax, m), ax = ax0, gndx = [], gstore0 = gstore2, jro = ginval, lnum = n, inv(gstore2 \ ginval), inv(groupblock(gndx0, lax, m)), n ∈ gstore2 ⊦ ⟪fail_or_success#(; ; err); if err = ESUCCESS then ax := ax + gstore0[lnum].ladrlist.to-adr(lnum), gndx := gndx + gstore0[lnum].gndlist else ax := ?, gndx := ?; if err = ESUCCESS then {jvalid := false; while ¬ jvalid ∧ gndx ≠ [] do {/* (term-remove-nonend-blocks: invariant # gndx ≤ # ax ∧ inv(gstore2) wfbound (jvalid ⊃ 0;# gndx)) */; if gndx.last.end then jvalid := true else {ax := ax.butlast; gndx := gndx.butlast}}}⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ax = ax0 + prefixn(valid-group-nodes(gndx0), lax).to-adr(n))), n ∈ ginval |
gstore2[n] = groupblock(gndx0, lax, m), inv(groupblock(gndx0, lax, m)), inv(gstore2 \ ginval), n ∈ gstore2, ¬ n ∈ ginval ⊦ ⟪fail_or_success#(; ; err); gndx := []; ax := ax0; if err = ESUCCESS then ax := ax + gstore2[n].ladrlist.to-adr(n), gndx := gndx + gstore2[n].gndlist else ax := ?, gndx := ?; if err = ESUCCESS then {jvalid := false; while ¬ jvalid ∧ gndx ≠ [] do {/* (term-remove-nonend-blocks: invariant # gndx ≤ # ax ∧ inv(gstore2) wfbound (jvalid ⊃ 0;# gndx)) */; if gndx.last.end then jvalid := true else {ax := ax.butlast; gndx := gndx.butlast}}}⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → ax = ax0 + prefixn(valid-group-nodes(gndx0), lax).to-adr(n)))