| boolvar ↔ jvalid, ax1 = log, fi1 = fi, ginval0 = ginval, gstore1 = gstore2, gstore3 = gstore, log = abs-log(nx0, gstore2 ↓), log = log, maxino0 = pmaxino, n0 = n, ns0 = p_os, nx1 = nx, ri0 = fi0, elems(nx0 + n ' + nx2) ∩ ginval = ∅, inv(gstore2 \ ginval), n ∈ gstore2, elems(nx0 + n ' + nx2) ⊆ dom gstore2 ⊦ [gjournal_remove_nonend_blocks#(n, fi0, fi, ginval, gstore2, gstore, nx, pmaxino, p_os, jvalid; log; err)] ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = ax1 + prefixn(valid-group-nodes(gstore1[n0].gndlist), gstore1[n0].ladrlist.to-adr(n0))) → ⟪nx := nx2⟫ ( (∃ nx1. nx0 + n ' + nx2 = nx1 + nx ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = abs-log(nx1, gstore2 ↓))) ∧ ¬ # nx2 < # nx)), n ∈ ginval |
log = abs-log(nx0, gstore2 ↓), elems(nx0 + n ' + nx2) ∩ ginval = ∅, inv(gstore2 \ ginval), n ∈ gstore2, elems(nx0 + n ' + nx2) ⊆ dom gstore2, ¬ n ∈ ginval ⊦ [gjournal_remove_nonend_blocks#(n, fi0, fi, ginval, gstore2, gstore, nx, pmaxino, p_os, jvalid; log; err)] ( (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = abs-log(nx0, gstore2 ↓) + prefixn(valid-group-nodes(gstore2[n].gndlist), gstore2[n].ladrlist).to-adr(n)) → ⟪nx := nx2⟫ ( (∃ nx1. nx0 + n ' + nx2 = nx1 + nx ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = abs-log(nx1, gstore2 ↓))) ∧ ¬ # nx2 < # nx))
Used simplifier rules: ⊦ prefixn(n, lax.to-adr(m)) = prefixn(n, lax).to-adr(m); (s)