| 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), fo0 ⊆ dom fi0, ro ⊆ dom ri ⊦ dups(log0), inodekey(0) ∈ ri, key ∈ ri ∧ ¬ key ∈ ro ∧ ¬ key.data?, ( ri[key] ∈ fs0 ∧ node-closed(fs0[ri[key]], ri, fs0, ro) → key ∈ ri ∧ ¬ key ∈ ro ∧ (¬ key.data? ∨ ¬ inodekey(key.ino) ∈ ro) → (key.data? ∧ inodekey(key.ino) ∈ ro ⊃ (∅)[key];ri[key]) ∈ fs0 ∧ node-closed(fs0[(key.data? ∧ inodekey(key.ino) ∈ ro ⊃ (∅)[key];ri[key])], replay-log(log0, fs0, fi0 ⊖ fo0), fs0, ∅)) ∧ file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅) |
replay-log(log0, fs0, fi0 ⊖ fo0) = (ri \ ro) \ datakeys(ro, ri), fo0.inodes?, ro.inodes?, file-node-cons(fs0, ri), log-cons(log0, fs0), node-closed(fs0[ri[key]], ri, fs0, ro), 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), key ∈ ri, ri[key] ∈ fs0, ro ⊆ dom ri, fo0 ⊆ dom fi0, ¬ key.data? ∨ ¬ inodekey(key.ino) ∈ ro ⊦ dups(log0), inodekey(0) ∈ ri, key ∈ ro, key ∈ ri ∧ ¬ key ∈ ro ∧ ¬ key.data?, (key.data? ∧ inodekey(key.ino) ∈ ro ⊃ (∅)[key];ri[key]) ∈ fs0 ∧ node-closed(fs0[(key.data? ∧ inodekey(key.ino) ∈ ro ⊃ (∅)[key];ri[key])], replay-log(log0, fs0, fi0 ⊖ fo0), fs0, ∅)
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), file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)), inodekey(0) ∈ ri, key ∈ ri ∧ ¬ key ∈ ro ∧ ¬ key.data?
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?