| 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), key ∈ ri, inodekey(key.ino) ∈ ri, fo0 ⊆ dom fi0, ro ⊆ dom ri ⊦ key.data?, dups(log0), inodekey(0) ∈ (ri \ ro) \ datakeys(ro, ri), inodekey(0) ∈ ri, key ∈ ro, inodekey(key.ino) ∈ ro, file-node-cons(fs0, (ri \ ro) \ datakeys(ro, ri)) ∧ orphans-cons(fs0, (ri \ ro) \ datakeys(ro, ri), ∅) |
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), inodekey(key.ino) ∈ ri, key ∈ ri, ro ⊆ dom ri, fo0 ⊆ dom fi0 ⊦ key.data?, dups(log0), inodekey(key.ino) ∈ ro, key ∈ ro, inodekey(0) ∈ ri, file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅)
Used simplifier rules: ⊦ key ∈ ri \ ks ↔ key ∈ ri ∧ ¬ key ∈ ks; (ls)