| dirs = abs-dirs(fs, ri), files = abs-files(fs, ri), ro = orphans(fs, ri), as ∩ range ri = ∅, fo.inodes?, orphans(fs, ri).inodes?, afs-cons(abs-dirs(fs, ri), abs-files(fs, ri)), file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, orphans(fs, ri)), replay-cons-strong(fs, ri, orphans(fs, ri), fi, fo, log), ri-cons(ri, fs), ri-inj(fi), ri-inj(ri), ubifs-cons(fs, ri, orphans(fs, ri), fi, fo, log), asynced → boolvar ⊦ ⟨afs_check_commit#(dirs, files; err0; asynced)⟩ ( dirs = abs-dirs(fs \ as, ri) ∧ files = abs-files(fs \ as, ri) ∧ orphans(abs-dirs(fs \ as, ri), abs-files(fs \ as, ri)) = abs-keys(ro) ∧ (asynced → true) ∧ ESUCCESS = err0) |
as ∩ range ri = ∅, orphans(fs, ri).inodes?, fo.inodes?, afs-cons(abs-dirs(fs, ri), abs-files(fs, ri)), file-node-cons(fs, ri), log-cons(log, fs), orphans-cons(fs, ri, orphans(fs, ri)), replay-cons-strong(fs, ri, orphans(fs, ri), fi, fo, log), ri-cons(ri, fs), ri-inj(ri), ri-inj(fi), ubifs-cons(fs, ri, orphans(fs, ri), fi, fo, log), asynced → boolvar ⊦ ⟨afs_check_commit#(abs-dirs(fs, ri), abs-files(fs, ri); err0; asynced)⟩ (ESUCCESS = err0)
Used simplifier rules: ⊦ abs-keys(orphans(fs0, ri0)) = abs-keys(orphans(fs, ri)) ↔ orphans(fs0, ri0) = 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)% ⊦ range ri ∩ as = ∅ → abs-files(fs \ as, ri) = abs-files(fs, ri); (s)% ⊦ range ri ∩ as = ∅ → abs-dirs(fs \ as, ri) = abs-dirs(fs, ri); (s)%int-c: ⊦ as ∩ as0 = as0 ∩ as; from specification set-union[node-store]%int-a: ⊦ (as ∩ as0) ∩ as1 = as ∩ as0 ∩ as1; from specification set-union[node-store]