| replay-log(log0, fs0, fi0 ⊖ fo0) = (ri \ ro) \ datakeys(ro, ri), fo0.inodes?, ro.inodes?, file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, ro), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-closed(ri, fs0, ro), ri-cons(ri, fs0), ri-inj(ri), ri-inj(fi0), ro ⊆ dom ri, fo0 ⊆ dom fi0 ⊦ dups(log0), orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅), inodekey(0) ∈ ri, key ∈ ri ∧ ¬ key ∈ ro ∧ ¬ key.data? |
fs0[replay-log(log0, fs0, fi0 ⊖ fo0)[inodekey(ino)]].nlink = 0, replay-log(log0, fs0, fi0 ⊖ fo0) = (ri \ ro) \ datakeys(ro, ri), ro.inodes?, fo0.inodes?, file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, ro), replay-safe(log0, fs0, fi0 ⊖ fo0), ri-closed(ri, fs0, ro), ri-cons(ri, fs0), ri-inj(fi0), ri-inj(ri), inodekey(ino) ∈ replay-log(log0, fs0, fi0 ⊖ fo0), fo0 ⊆ dom fi0, ro ⊆ dom ri, inodekey(ino) ∈ ri → (fs0[ri[inodekey(ino)]].nlink = 0 ↔ inodekey(ino) ∈ ro) ⊦ ino = ROOT_INO, dups(log0), inodekey(0) ∈ ri, key ∈ ri ∧ ¬ key ∈ ro ∧ ¬ key.data?
Used simplifier rules: ⊦ ¬ key ∈ ∅; (s)%⊦ orphans-cons(fs, ri, ro) → ( orphans-cons(fs0, ri0, ro0) ↔ (∀ ino. ( inodekey(ino) ∈ ri → ( fs[ri[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO ↔ inodekey(ino) ∈ ro)) → inodekey(ino) ∈ ri0 → ( fs0[ri0[inodekey(ino)]].nlink = 0 ∧ ino ≠ ROOT_INO ↔ inodekey(ino) ∈ ro0))); (ss)