| boolvar1, dirs0 = abs-dirs(fs0, ri), fi = fi0, files0 = abs-files(fs0, ri), fo = fo0, fs = fs0, log = log0, orphans(dirs0, files0) = abs-keys(ro), fo0.inodes?, ro.inodes?, afs-cons(dirs0, files0), file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, ro), replay-cons-strong(fs0, ri, ro, fi0, fo0, log0), ri-inj(fi0), ri-inj(ri), ubifs-cons(fs0, ri, ro, fi0, fo0, log0), boolvar0 → boolvar1 ⊦ ⟪aubifs_replay#(boolvar2; ri0, fi, ro0, fo, fs, log, boolvar3; err)⟫ ( ( err = ESUCCESS → (∃ dirs, files, asynced. (dirs = dirs0 \ orphans(dirs0, files0) ∧ files = files0 \ orphans(dirs0, files0)) ∧ ⟨afs_recovery#(boolvar2; dirs, files; asynced, err0)⟩ ((dirs = abs-dirs(fs, ri0) ∧ files = abs-files(fs, ri0) ∧ orphans(dirs, files) = abs-keys(ro0) ∧ (asynced → boolvar3)) ∧ err = err0))) ∧ ( err ≠ ESUCCESS → (∀ dirs, files, boolvar. ⟨afs_recovery#(boolvar2; dirs1, files1; asynced0, err0)⟩ (dirs = dirs1 ∧ files = files1 ∧ (boolvar ↔ asynced0) ∧ err = err0)))) |
dirs0 = abs-dirs(fs0, ri), files0 = abs-files(fs0, ri), fo0.inodes?, orphans(fs0, ri).inodes?, afs-cons(abs-dirs(fs0, ri), abs-files(fs0, ri)), file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, orphans(fs0, ri)), replay-cons-strong(fs0, ri, orphans(fs0, ri), fi0, fo0, log0), ri-inj(fi0), ri-inj(ri), ubifs-cons(fs0, ri, orphans(fs0, ri), fi0, fo0, log0) ⊦ ⟪aubifs_replay#(boolvar2; ri0, fi0, ro0, fo0, fs0, log0, boolvar3; err)⟫ ( ( err = ESUCCESS → ⟨dirs := dirs0 \ orphans(dirs0, files0), files := files0 \ orphans(dirs0, files0); afs_recovery#(boolvar2; dirs, files; asynced, err0)⟩ ( dirs = abs-dirs(fs0, ri0) ∧ files = abs-files(fs0, ri0) ∧ orphans(abs-dirs(fs0, ri0), abs-files(fs0, ri0)) = abs-keys(ro0) ∧ (asynced → boolvar3) ∧ ESUCCESS = err0)) ∧ ( err ≠ ESUCCESS → (∀ dirs, files, boolvar. ⟨afs_recovery#(boolvar2; dirs1, files1; asynced0, err0)⟩ (dirs = dirs1 ∧ files = files1 ∧ (boolvar ↔ asynced0) ∧ err = err0))))
Used simplifier rules: ⊦ ro.inodes? → (abs-keys(ro) = abs-keys(orphans(fs, ri)) ↔ ro = orphans(fs, ri)); (s)%⊦ afs-cons(abs-dirs(fs, ri), abs-files(fs, ri)) → orphans(abs-dirs(fs, ri), abs-files(fs, ri)) = abs-keys(orphans(fs, ri)); (s)