| # lax = # gndx1, lax.to-adr(lnum) = ax2, jvalid0 ↔ boolvar0, gstore2[lnum] = groupblock(gndx1, lax, m), ax = ax1, err = err0, err = ESUCCESS, err1 = ESUCCESS, fi0 = ri, gstore = gstore1, gstore0 = gstore2, jro = ginval, ndx0 = [], nx = nx0, p_os = ns, pmaxino = maxino, inv(gstore2 \ ginval), inv(groupblock(gndx1, lax, m)), ri-cons(ri, nodes(gstore2 ↓, ginval)), lnum ∈ gstore2, err = ESUCCESS → (∃ ax0, gndx0. ax2 = ax0 + ax ∧ gndx1 = gndx0 + gndx ∧ # ax2 = # gndx1 ∧ # ax = # gndx ∧ ndx = nodes(gstore0 ↓, jro)[referenced-adrs(ax0, fi0)]), err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪let jvalid = ?, adr0 = ? in {let adr = ax.head, gnd = gndx.head in let key = gnd.nd.key in {index_index_lookup#(key, fi0, fi, jro, gstore0, gstore, nx, pmaxino, p_os, jvalid0; jvalid, adr0; err); if err = ESUCCESS ∧ jvalid ∧ adr0 = adr then ndx := ndx + gnd.nd}; if err = ESUCCESS then {ax := ax.tail; gndx := gndx.tail}}⟫ ( ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → (∃ ax0, gndx0. ax2 = ax0 + ax ∧ gndx1 = gndx0 + gndx ∧ # ax2 = # gndx1 ∧ # ax = # gndx ∧ ndx = nodes(gstore0 ↓, jro)[referenced-adrs(ax0, fi0)]))) ∧ (err = ESUCCESS ⊃ # ax;0) < (err0 = ESUCCESS ⊃ # ax1;0)), ax = [], lnum ∈ ginval |
# lax = # gndx1, lax.to-adr(lnum) = ax2, jvalid0 ↔ boolvar0, gstore2[lnum] = groupblock(gndx1, lax, m), ax = ax1, err = ESUCCESS, err = err0, err1 = ESUCCESS, fi0 = ri, gstore = gstore1, gstore0 = gstore2, jro = ginval, ndx0 = [], nx = nx0, p_os = ns, pmaxino = maxino, inv(groupblock(gndx1, lax, m)), inv(gstore2 \ ginval), ri-cons(ri, nodes(gstore2 ↓, ginval)), lnum ∈ gstore2, err = ESUCCESS → (∃ ax0, gndx0. ax2 = ax0 + ax ∧ gndx1 = gndx0 + gndx ∧ # ax2 = # gndx1 ∧ # ax = # gndx ∧ ndx = nodes(gstore0 ↓, jro)[referenced-adrs(ax0, fi0)]), err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪let adr = ax.head, gnd = gndx.head in let key = gnd.nd.key in {index_index_lookup#(key, fi0, fi, jro, gstore0, gstore, nx, pmaxino, p_os, jvalid0; jvalid, adr0; err); if err = ESUCCESS ∧ jvalid ∧ adr0 = adr then ndx := ndx + gnd.nd}; if err = ESUCCESS then {ax := ax.tail; gndx := gndx.tail}⟫ ( ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ ( err = ESUCCESS → (∃ ax0, gndx0. ax2 = ax0 + ax ∧ gndx1 = gndx0 + gndx ∧ # ax2 = # gndx1 ∧ # ax = # gndx ∧ ndx = nodes(gstore0 ↓, jro)[referenced-adrs(ax0, fi0)]))) ∧ (err = ESUCCESS ⊃ # ax;0) < (err0 = ESUCCESS ⊃ # ax1;0)), ax = [], lnum ∈ ginval