| fo0.inodes?, orphans(fs0, ri1).inodes?, afs-cons(abs-dirs(fs0, ri1), abs-files(fs0, ri1)), file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)), file-node-cons(fs0, ri1), log-cons(log0, fs0), orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅), orphans-cons(fs0, ri1, orphans(fs0, ri1)), replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0), replay-cons-strong(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(replay-log(log0, fs0, fi0 ⊖ fo0)), ri-inj(fi0), ri-inj(ri1), ubifs-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0), ubifs-cons(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0) ⊦ abs-files(fs0, ri1) \ abs-keys(orphans(fs0, ri1)) = abs-files(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) |
orphans(fs0, ri1).inodes?, fo0.inodes?, afs-cons(abs-dirs(fs0, ri1), abs-files(fs0, ri1)), file-node-cons(fs0, ri1), file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)), log-cons(log0, fs0), orphans-cons(fs0, ri1, orphans(fs0, ri1)), orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅), replay-cons-strong(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-inj(ri1), ri-inj(fi0), ri-inj(replay-log(log0, fs0, fi0 ⊖ fo0)), ubifs-cons(fs0, ri1, orphans(fs0, ri1), fi0, fo0, log0), ubifs-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0) ⊦ ( inodekey(ino) ∈ ri1 ∧ ¬ fs0[ri1[inodekey(ino)]].directory ∧ (fs0[ri1[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO) ↔ inodekey(ino) ∈ replay-log(log0, fs0, fi0 ⊖ fo0) ∧ ¬ fs0[replay-log(log0, fs0, fi0 ⊖ fo0)[inodekey(ino)]].directory) ∧ ( inodekey(ino) ∈ ri1 ∧ ¬ fs0[ri1[inodekey(ino)]].directory ∧ (fs0[ri1[inodekey(ino)]].nlink ≠ 0 ∨ ino = ROOT_INO) → (abs-files(fs0, ri1) \ abs-keys(orphans(fs0, ri1)))[ino] = mkfile (fs0[replay-log(log0, fs0, fi0 ⊖ fo0)[inodekey(ino)]].size, fs0[replay-log(log0, fs0, fi0 ⊖ fo0)[inodekey(ino)]].meta, fs0[replay-log(log0, fs0, fi0 ⊖ fo0)[inodekey(ino)]].nlink, abs-content(ino, fs0, replay-log(log0, fs0, fi0 ⊖ fo0))))
Used simplifier rules: ⊦ abs-file(ino, fs, ri) = mkfile (fs[ri[inodekey(ino)]].size, fs[ri[inodekey(ino)]].meta, fs[ri[inodekey(ino)]].nlink, abs-content(ino, fs, ri)); (s)% ⊦ inodekey(m).ino = m; (s)% ⊦ inodekey(m).inode?; (s)%⊦ key ∈ orphans(fs, ri) ↔ key.inode? ∧ key ∈ ri ∧ fs[ri[key]].nlink = 0 ∧ key.ino ≠ ROOT_INO; (s)% ⊦ n ∈ abs-keys(ks) ↔ inodekey(n) ∈ ks; (s)%⊦ ino ∈ abs-files(fs, ri) ↔ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory; (s)% ⊦ ino ∈ files \ ns ↔ ino ∈ files ∧ ¬ ino ∈ ns; (s)%⊦ files = abs-files(fs, ri) ↔ (∀ ino. ( ino ∈ files ↔ inodekey(ino) ∈ ri ∧ ¬ fs[ri[inodekey(ino)]].directory) ∧ (ino ∈ files → files[ino] = abs-file(ino, fs, ri))); (ss)