| jvalid0 ↔ jvalid2, fi = fi3, fi0 = fi3, fo = fo0, fo0 = jro1.keys, fs = fs0, fs0 = nodes(gstore2 ↓, jro4), ks = ks0, log = log0, log0 = abs-log(nx1, gstore2 ↓), remove-refsize0(gstore3) = gstore3, ro = ∅, elems nx1 ∩ jro4 = ∅, dom gstore3 ∪ elems nx1 = dom gstore2 ∪ jro4, jro1.keys.inodes?, jro5.keys.inodes?, fi3.inos < jmaxino0, ri0.inos < jmaxino3, jro1 < jmaxino0, jro5 < jmaxino3, inv(crash(gstore2, gstore3, jro4, nx1) \ jro4), inv(gstore3), inv(gstore2 \ jro4), log-cons(abs-log(nx1, gstore2 ↓), nodes(gstore2 ↓, jro4)), refsize-cons(gstore3, range fi3), refsize-cons(gstore2, range ri0), ri-inj(fi3), ri-inj(ri0), jmaxino0 ≤ jmaxino3, fi3.lebs ⊆ dom gstore3, ri0.lebs ⊆ dom gstore2, jvalid8 ∧ nx1 ≠ [] → valid-journal-head(nx1, gstore2, jro4) ⊦ ⟨fail_or_success#(; ; err); if err = ESUCCESS then {ri := fi, ro := fo, ax := log; ks := ro; jvalid := true} else ri := ?, fi := ?, fs := ?, log := ?, ro := ?, fo := ?, ax := ?, ks := ?, jvalid := ?⟩ ( jro1.keys = ro ∧ jro1.keys = fo ∧ fi = ri ∧ fi0 = ri ∧ log = abs-log(nx1, gstore2 ↓) ∧ fs = nodes(gstore2 ↓, jro4) ∧ abs-log(nx1, gstore2 ↓) = ax ∧ jro1.keys = ks ∧ ESUCCESS = err), jmaxino0 = 0, jmaxino3 = 0, dups(nx1) |
jvalid0 ↔ jvalid2, fi = fi3, fi0 = fi3, fo = fo0, fo0 = jro1.keys, fs = fs0, fs0 = nodes(gstore2 ↓, jro4), ks = ks0, log = log0, log0 = abs-log(nx1, gstore2 ↓), remove-refsize0(gstore3) = gstore3, ro = ∅, elems nx1 ∩ jro4 = ∅, dom gstore3 ∪ elems nx1 = dom gstore2 ∪ jro4, jro5.keys.inodes?, jro1.keys.inodes?, jro5 < jmaxino3, jro1 < jmaxino0, ri0.inos < jmaxino3, fi3.inos < jmaxino0, inv(gstore2 \ jro4), inv(gstore3), inv(crash(gstore2, gstore3, jro4, nx1) \ jro4), log-cons(abs-log(nx1, gstore2 ↓), nodes(gstore2 ↓, jro4)), refsize-cons(gstore2, range ri0), refsize-cons(gstore3, range fi3), ri-inj(ri0), ri-inj(fi3), jmaxino0 ≤ jmaxino3, ri0.lebs ⊆ dom gstore2, fi3.lebs ⊆ dom gstore3, jvalid8 ∧ nx1 ≠ [] → valid-journal-head(nx1, gstore2, jro4) ⊦ ⟨choose err0 with ⌊err0⌋ ∨ err0 = ESUCCESS in err := err0; if err = ESUCCESS then {ri := fi, ro := fo, ax := log; ks := ro; jvalid := true} else ri := ?, fi := ?, fs := ?, log := ?, ro := ?, fo := ?, ax := ?, ks := ?, jvalid := ?⟩ ( jro1.keys = ro ∧ jro1.keys = fo ∧ fi = ri ∧ fi0 = ri ∧ log = abs-log(nx1, gstore2 ↓) ∧ fs = nodes(gstore2 ↓, jro4) ∧ abs-log(nx1, gstore2 ↓) = ax ∧ jro1.keys = ks ∧ ESUCCESS = err), jmaxino0 = 0, jmaxino3 = 0, dups(nx1)
Used simplifier rules: fail_or_success#(; ; ERR) {choose ERR0 with ⌊ERR0⌋ ∨ ERR0 = ESUCCESS in ERR := ERR0};