| remove-refsize0(gstore3) = gstore3, elems nx1 ∩ jro4 = ∅, dom gstore3 ∪ elems nx1 = dom gstore2 ∪ jro4, jmaxino0 ≠ 0, jmaxino3 ≠ 0, 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, ⌊err⌋ , ¬ dups(nx1), jvalid8 ∧ nx1 ≠ [] → valid-journal-head(nx1, gstore2, jro4) ⊦ ⟨aubifs_core_recover#(jvalid2; ax, ks0, fi5, ro1, fo1, log1, fs1; ri1, jvalid7, err1)⟩ (ri = ri1 ∧ fi = fi5 ∧ ro = ro1 ∧ fo = fo1 ∧ fs = fs1 ∧ log = ax ∧ (jvalid ↔ jvalid7) ∧ log1 = ax ∧ jro1.keys = ks0 ∧ err = err1) |
jvalid0 ↔ jvalid2, fi = fi5, fo = fo1, fs = fs1, ks = ks0, log = log1, remove-refsize0(gstore3) = gstore3, ro = ro1, 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, ⌊err0⌋ , 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 := ?⟩ (ri2 = ri ∧ fi0 = fi ∧ ro0 = ro ∧ fo0 = fo ∧ fs0 = fs ∧ log0 = ax ∧ (jvalid1 ↔ jvalid) ∧ log = ax ∧ jro1.keys = ks ∧ err0 = err), jmaxino0 = 0, jmaxino3 = 0, dups(nx1)
Used simplifier rules: aubifs_core_recover# (DOSYNC; AX, KS, FI, RO, FO, LOG, FS; RI, CSYNCED, ERR) {fail_or_success#(; ; ERR); if ERR = ESUCCESS then {RI := FI, RO := FO, AX := LOG; KS := RO; CSYNCED := true} else RI := ?, FI := ?, FS := ?, LOG := ?, RO := ?, FO := ?, AX := ?, KS := ?, CSYNCED := ? };