| orphans(fs0, ri1).inodes?, fo0.inodes?, afs-cons(abs-dirs(fs0, ri1), abs-files(fs0, ri1)), file-node-cons(fs0, ri1), log-cons(log0, fs0), orphans-cons(fs0, ri1, orphans(fs0, ri1)), replay-cons-strong(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(ri1), ri-inj(fi0), ubifs-cons(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), err0 = ESUCCESS → ubifs-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0) ∧ replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0) ∧ file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅) ∧ ri-inj(replay-log(log0, fs0, fi0 ⊖ fo0)), ⌊err0⌋ ∨ err0 = ESUCCESS, err0 = ESUCCESS ∨ ⌊err0⌋ ⊦ ( err0 = ESUCCESS → ⟨dirs := abs-dirs(fs0, ri1) \ abs-keys(orphans(fs0, ri1)), files := abs-files(fs0, ri1) \ abs-keys(orphans(fs0, ri1)); afs_recovery#(boolvar2; dirs, files; asynced, err1)⟩ ( dirs = abs-dirs(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ files = abs-files(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ orphans(abs-dirs(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)), abs-files(fs0, replay-log(log0, fs0, fi0 ⊖ fo0))) = ∅ ∧ ESUCCESS = err1)) ∧ ( err0 ≠ ESUCCESS → ⟨afs_recovery#(boolvar2; dirs1, files1; asynced0, err1)⟩ (dirs = dirs1 ∧ files = files1 ∧ (boolvar ↔ asynced0) ∧ err0 = err1)) |
err0 = ESUCCESS, fo0.inodes?, orphans(fs0, ri1).inodes?, afs-cons(abs-dirs(fs0, ri1), abs-files(fs0, ri1)), file-node-cons(fs0, ri1), log-cons(log0, fs0), orphans-cons(fs0, ri1, orphans(fs0, ri1)), replay-cons-strong(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(fi0), ri-inj(ri1), ubifs-cons(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), err0 = ESUCCESS → ubifs-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0) ∧ replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0) ∧ file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅) ∧ ri-inj(replay-log(log0, fs0, fi0 ⊖ fo0)), err0 = ESUCCESS ∨ ⌊err0⌋ , ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟨dirs := abs-dirs(fs0, ri1) \ abs-keys(orphans(fs0, ri1)), files := abs-files(fs0, ri1) \ abs-keys(orphans(fs0, ri1)); afs_recovery#(boolvar2; dirs, files; asynced, err1)⟩ ( dirs = abs-dirs(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ files = abs-files(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ orphans(abs-dirs(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)), abs-files(fs0, replay-log(log0, fs0, fi0 ⊖ fo0))) = ∅ ∧ ESUCCESS = err1)
fo0.inodes?, orphans(fs0, ri1).inodes?, afs-cons(abs-dirs(fs0, ri1), abs-files(fs0, ri1)), file-node-cons(fs0, ri1), log-cons(log0, fs0), orphans-cons(fs0, ri1, orphans(fs0, ri1)), replay-cons-strong(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(fi0), ri-inj(ri1), ubifs-cons(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), err0 = ESUCCESS → ubifs-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0) ∧ replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0) ∧ file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅) ∧ ri-inj(replay-log(log0, fs0, fi0 ⊖ fo0)), err0 = ESUCCESS ∨ ⌊err0⌋ , ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟨afs_recovery#(boolvar2; dirs1, files1; asynced0, err1)⟩ (dirs = dirs1 ∧ files = files1 ∧ (boolvar ↔ asynced0) ∧ err0 = err1), err0 = ESUCCESS