| remove-refsize0(gstore2) = gstore2, elems nx ∩ jro = ∅, dom gstore2 ∪ elems nx = dom gstore3 ∪ jro, nx ≠ [], pmaxino ≠ 0, n0 < LEB_SIZE, n0 < jmaxino, fi1.inos < pmaxino, fi2.inos < jmaxino1, p_os < pmaxino, inv(gstore2), inv(gstore3 \ jro), inv(gstore3[nx.last]), refsize-cons(gstore2, range fi1), refsize-cons(gstore3, range fi2), ri-inj(fi2), ri-inj(fi1), valid-journal-head(nx, gstore3, jro), nx.last ∈ gstore3, pmaxino ≤ jmaxino1, jmaxino ≤ LEB_SIZE, fi1.lebs ⊆ dom gstore2, fi2.lebs ⊆ dom gstore3, ¬ dups(nx) ⊦ [fail_or_success#(; ; err); nx0 := nx; jro0 := jro; gstore := gstore3; if err = ESUCCESS then choose n with ¬ n ∈ gstore in gstore[n] := groupblock([], [], 0), nx := nx + n, jro := jro -- n] ( inv(gstore \ jro) ∧ elems nx ∩ jro = ∅ ∧ ¬ dups(nx) ∧ dom gstore2 ∪ elems nx = dom gstore ∪ jro → ⟪jvalid1 := true; if err = ESUCCESS then jvalid1 := true⟫ ( (jvalid1 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro)) ∧ fi2.lebs ⊆ dom gstore ∧ refsize-cons(gstore, range fi2) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ dom gstore3 ⊆ dom gstore ∧ (nx.toSet \ nx0.toSet) ∩ dom gstore3 = ∅ ∧ abs-log(nx, gstore ↓) = abs-log(nx0, gstore3 ↓) ∧ nodes(gstore ↓, jro) = nodes(gstore3 ↓, jro0) ∧ (err = ESUCCESS → jvalid1 ∧ nx ≠ []))) |
remove-refsize0(gstore2) = gstore2, elems nx ∩ jro = ∅, dom gstore2 ∪ elems nx = dom gstore3 ∪ jro, p_os < pmaxino, fi2.inos < jmaxino1, fi1.inos < pmaxino, n0 < jmaxino, n0 < LEB_SIZE, inv(gstore3[nx.last]), inv(gstore3 \ jro), inv(gstore2), refsize-cons(gstore3, range fi2), refsize-cons(gstore2, range fi1), ri-inj(fi1), ri-inj(fi2), valid-journal-head(nx, gstore3, jro), nx.last ∈ gstore3, jmaxino ≤ LEB_SIZE, pmaxino ≤ jmaxino1, fi2.lebs ⊆ dom gstore3, fi1.lebs ⊆ dom gstore2 ⊦ [choose err0 with ⌊err0⌋ ∨ err0 = ESUCCESS in err := err0; nx0 := nx; jro0 := jro; gstore := gstore3; if err = ESUCCESS then choose n with ¬ n ∈ gstore in gstore[n] := groupblock([], [], 0), nx := nx + n, jro := jro -- n] ( inv(gstore \ jro) ∧ elems nx ∩ jro = ∅ ∧ ¬ dups(nx) ∧ dom gstore2 ∪ elems nx = dom gstore ∪ jro → ⟪jvalid1 := true; if err = ESUCCESS then jvalid1 := true⟫ ( (jvalid1 ∧ nx ≠ [] → valid-journal-head(nx, gstore, jro)) ∧ fi2.lebs ⊆ dom gstore ∧ refsize-cons(gstore, range fi2) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ dom gstore3 ⊆ dom gstore ∧ (nx.toSet \ nx0.toSet) ∩ dom gstore3 = ∅ ∧ abs-log(nx, gstore ↓) = abs-log(nx0, gstore3 ↓) ∧ nodes(gstore ↓, jro) = nodes(gstore3 ↓, jro0) ∧ (err = ESUCCESS → jvalid1 ∧ nx ≠ []))), nx = [], pmaxino = 0, dups(nx)
Used simplifier rules: fail_or_success#(; ; ERR) {choose ERR0 with ⌊ERR0⌋ ∨ ERR0 = ESUCCESS in ERR := ERR0};