| fi1 = fi0, fo1 = fo0, fs1 = fs0, log1 = log0, ro.inodes?, fo0.inodes?, file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, ro), replay-cons-strong(fs0, ri, ro, fi0, fo0, log0), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(fi0), ri-inj(ri), ubifs-cons(fs0, ri, ro, fi0, fo0, log0) ⊦ ∀ ri0, fi0, ro0, fo0, fs0, log0, boolvar1, err. ri0 = replay-log(log1, fs1, fi1 ⊖ fo1) ∧ ro0 = ∅ ∧ fs0 = fs1 ∧ fi0 = fi1 ∧ fo0 = fo1 ∧ log0 = log1 ∧ boolvar1 → err = ESUCCESS → ubifs-cons(fs1, replay-log(log1, fs1, fi1 ⊖ fo1), ∅, fi1, fo1, log1) ∧ replay-cons-strong(fs1, replay-log(log1, fs1, fi1 ⊖ fo1), ∅, fi1, fo1, log1) ∧ file-node-cons(fs1, replay-log(log1, fs1, fi1 ⊖ fo1)) ∧ orphans-cons(fs1, replay-log(log1, fs1, fi1 ⊖ fo1), ∅) ∧ ri-inj(fi1) |
ro.inodes?, fo0.inodes?, file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, ro), replay-cons-strong(fs0, ri, ro, fi0, fo0, log0), replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(fi0), ri-inj(ri), ubifs-cons(fs0, ri, ro, fi0, fo0, log0) ⊦ orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅) ∧ file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ ubifs-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0)
Used simplifier rules: ⊦ ri ⊖ ∅ = ri; (s)%⊦ replay-cons-strong(fs, ri, ro, fi, fo, log) → replay-safe(log, fs, fi ⊖ fo); (ss)% ⊦ replay(log, fs, fi, fo) = replay-log(log, fs, fi ⊖ fo); (s)%⊦ replay-cons-strong(fs, ri, ro, fi, fo, log) → ( replay-cons-strong(fs0, ri0, ro0, fi0, fo0, log0) ↔ replay-safe(log, fs, fi ⊖ fo) ∧ replay(log, fs, fi, fo) = ri ⊖ ro → replay-safe(log0, fs0, fi0 ⊖ fo0) ∧ replay(log0, fs0, fi0, fo0) = ri0 ⊖ ro0); (ss)