| log = abs-log(nx0, gstore2 ↓), nx1 = n + nx2, elems(nx0 + nx1) ∩ ginval = ∅, inv(gstore2 \ ginval), elems(nx0 + nx1) ⊆ dom gstore2 ⊦ ⟪gjournal_remove_nonend_blocks#(n, fi0, fi, ginval, gstore2, gstore, nx, pmaxino, p_os, jvalid; log; err); nx := nx2⟫ ((∃ nx3. nx0 + nx1 = nx3 + nx ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = abs-log(nx3, gstore2 ↓))) ∧ # nx < # nx1), nx1 = [] |
log = abs-log(nx0, gstore2 ↓), elems(nx0 + n ' + nx2) ∩ ginval = ∅, inv(gstore2 \ ginval), elems(nx0 + n ' + nx2) ⊆ dom gstore2 ⊦ ⟪gjournal_remove_nonend_blocks#(n, fi0, fi, ginval, gstore2, gstore, nx, pmaxino, p_os, jvalid; log; err); nx := nx2⟫ ((∃ nx1. nx0 + n ' + nx2 = nx1 + nx ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → log = abs-log(nx1, gstore2 ↓))) ∧ ¬ # nx2 < # nx)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ m +1 = m + 1; (s)% ⊦ #(n ' + nx) = (# nx)+1; (s)% ⊦ n ' + nx ≠ []; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ n + nx = n ' + nx; (s)