| remove-refsize0(gstore3) = gstore3, elems nx3 ∩ jro3 = ∅, dom gstore3 ∪ elems nx3 = dom gstore2 ∪ jro3, jmaxino0 ≠ 0, jmaxino3 ≠ 0, fi4.inos < jmaxino0, fi1.inos < jmaxino3, jro5 < jmaxino0, jro2 < jmaxino3, inv(gstore3), inv(gstore2 \ jro3), refsize-cons(gstore3, range fi4), refsize-cons(gstore2, range fi1), ri-inj(fi4), ri-inj(fi1), jmaxino0 ≤ jmaxino3, fi4.lebs ⊆ dom gstore3, fi1.lebs ⊆ dom gstore2, ¬ dups(nx3), jvalid0 ∧ nx3 ≠ [] → valid-journal-head(nx3, gstore2, jro3) ⊦ ⟪gjournal_restore_log#(nx3, fi4, fi4, jro3, crash(gstore2, gstore3, jro3, nx3), gstore3, nx3, jmaxino0, jro5, true; log; err); ks := jro5.keys⟫ (err = ESUCCESS → fi4.lebs ⊆ dom gstore2 ∪ jro3 ∧ dom gstore3 ∪ elems nx3 = (dom gstore2 ∪ jro3) ∪ jro3) |
elems nx ∩ ginval = ∅, elems nx ⊆ dom gstore, inv(gstore) ⊦ ⟪gjournal_restore_log#(nx, ri, fi, ginval, gstore, gstore0, nx0, maxino, ns, boolvar0; log; err)⟫ true
remove-refsize0(gstore3) = gstore3, elems nx3 ∩ jro3 = ∅, dom gstore3 ∪ elems nx3 = dom gstore2 ∪ jro3, jro2 < jmaxino3, jro5 < jmaxino0, fi1.inos < jmaxino3, fi4.inos < jmaxino0, inv(gstore2 \ jro3), inv(gstore3), refsize-cons(gstore2, range fi1), refsize-cons(gstore3, range fi4), ri-inj(fi1), ri-inj(fi4), jmaxino0 ≤ jmaxino3, fi1.lebs ⊆ dom gstore2, fi4.lebs ⊆ dom gstore3, jvalid0 ∧ nx3 ≠ [] → valid-journal-head(nx3, gstore2, jro3) ⊦ jmaxino0 = 0, jmaxino3 = 0, dups(nx3), elems nx3 ∩ jro3 = ∅ ∧ elems nx3 ⊆ dom crash(gstore2, gstore3, jro3, nx3) ∧ inv(crash(gstore2, gstore3, jro3, nx3))
boolvar ↔ true, fi0 = fi4, ginval0 = jro3, gstore1 = crash(gstore2, gstore3, jro3, nx3), gstore4 = gstore3, maxino0 = jmaxino0, ns0 = jro5, nx1 = nx3, nx2 = nx3, remove-refsize0(gstore3) = gstore3, ri0 = fi4, elems nx3 ∩ jro3 = ∅, dom gstore3 ∪ elems nx3 = dom gstore2 ∪ jro3, jro2 < jmaxino3, jro5 < jmaxino0, fi1.inos < jmaxino3, fi4.inos < jmaxino0, inv(gstore2 \ jro3), inv(gstore3), inv(crash(gstore2, gstore3, jro3, nx3)), refsize-cons(gstore2, range fi1), refsize-cons(gstore3, range fi4), ri-inj(fi1), ri-inj(fi4), jmaxino0 ≤ jmaxino3, fi1.lebs ⊆ dom gstore2, fi4.lebs ⊆ dom gstore3, elems nx3 ⊆ dom crash(gstore2, gstore3, jro3, nx3), jvalid0 ∧ nx3 ≠ [] → valid-journal-head(nx3, gstore2, jro3) ⊦ [gjournal_restore_log#(nx3, fi4, fi4, jro3, crash(gstore2, gstore3, jro3, nx3), gstore3, nx3, jmaxino0, jro5, true; log; err)] (true → ⟪ks := jro5.keys⟫ (err = ESUCCESS → fi4.lebs ⊆ dom gstore2 ∪ jro3 ∧ dom gstore3 ∪ elems nx3 = (dom gstore2 ∪ jro3) ∪ jro3)), jmaxino0 = 0, jmaxino3 = 0, dups(nx3)