| replay-log(log, fs, fi ⊖ fo) = ri ⊖ ro, log-cons(log, fs), node-cons(nd.key, nd), replay-safe(log, fs, fi ⊖ fo), ri-cons(ri, fs) ⊦ replay-safe(log, fs[adr, nd], fi ⊖ fo) ∧ ¬ adr ∈ replay-log(log, fs[adr, nd], fi ⊖ fo) ∧ replay-one(adr, nd, replay-log(log, fs[adr, nd], fi ⊖ fo)) = ri[nd.key, adr] ⊖ ro ↔ replay-one(adr, nd, ri ⊖ ro) = ri[nd.key, adr] ⊖ ro, adr ∈ fs |
⊦ ¬ adr ∈ log → (replay-safe(log, fs[adr, nd], ri) ↔ replay-safe(log, fs, ri))
replay-log(log, fs, fi ⊖ fo) = ri ⊖ ro, log-cons(log, fs), node-cons(nd.key, nd), replay-safe(log, fs, fi ⊖ fo), ri-cons(ri, fs) ⊦ replay-safe(log, fs, fi ⊖ fo) ∧ ¬ adr ∈ replay-log(log, fs[adr, nd], fi ⊖ fo) ∧ replay-one(adr, nd, replay-log(log, fs[adr, nd], fi ⊖ fo)) = ri[nd.key, adr] ⊖ ro ↔ replay-one(adr, nd, ri ⊖ ro) = ri[nd.key, adr] ⊖ ro, adr ∈ fs, adr ∈ log
Used simplifier rules: ⊦ log-cons(log, fs) ∧ adr ∈ log → adr ∈ fs; (ss) Used terms: fi ⊖ fo, nd, adr, fs, log