| ro.inodes?, fo0.inodes?, file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, ro), replay-cons-strong(fs0, ri, ro, fi0, fo0, log0), replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0), 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, orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅) ∧ file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ ¬ inodekey(0) ∈ replay-log(log0, fs0, fi0 ⊖ fo0) ∧ ri-cons(replay-log(log0, fs0, fi0 ⊖ fo0), fs0) ∧ ri-closed(replay-log(log0, fs0, fi0 ⊖ fo0), fs0, ∅) |
⊦ replay-cons-strong(fs, ri, ro, fi, fo, log) ↔ replay-safe(log, fs, fi ⊖ fo) ∧ replay(log, fs, fi, fo) = ri ⊖ ro
replay(log0, fs0, fi0, fo0) = ri ⊖ ro, fo0.inodes?, ro.inodes?, file-node-cons(fs0, ri), log-cons(log0, fs0), orphans-cons(fs0, ri, ro), replay-cons-strong(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅, fi0, fo0, log0), 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), inodekey(0) ∈ ri, orphans-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0), ∅) ∧ file-node-cons(fs0, replay-log(log0, fs0, fi0 ⊖ fo0)) ∧ ¬ inodekey(0) ∈ replay-log(log0, fs0, fi0 ⊖ fo0) ∧ ri-cons(replay-log(log0, fs0, fi0 ⊖ fo0), fs0) ∧ ri-closed(replay-log(log0, fs0, fi0 ⊖ fo0), fs0, ∅)
Used terms: log0, fo0, fi0, ro, ri, fs0