| inv(gstore), n ∈ gstore ⊦ ⟪gjournal_remove_nonend_blocks#(n, ri, fi, ginval, gstore, gstore0, nx0, maxino, ns, boolvar0; log; err)⟫ true, n ∈ ginval |
jvalid0 ↔ boolvar0, fi0 = ri, gstore = gstore1, gstore0 = gstore2, jro = ginval, lnum = n, nx = nx0, p_os = ns, pmaxino = maxino, inv(gstore2), n ∈ gstore2 ⊦ ⟪let gndx = [], jvalid = false in {index_read_gblock_nodes#(lnum, fi0, fi, jro, gstore0, gstore, nx, pmaxino, p_os, jvalid0; log, gndx; err); if err = ESUCCESS then while ¬ jvalid ∧ gndx ≠ [] do {/* (term-remove-nonend-blocks: invariant # gndx ≤ # log ∧ inv(gstore0) wfbound (jvalid ⊃ 0;# gndx)) */; if gndx.last.end then jvalid := true else {log := log.butlast; gndx := gndx.butlast}}}⟫ true, n ∈ ginval
Used simplifier rules: remove-nonend-blocks: ⊦ ;