| 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 + adr ', 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 |
⊦ replay-safe(log0 + log1, fs, ri) ↔ replay-safe(log0, fs, ri) ∧ replay-safe(log1, fs, replay-log(log0, 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[adr, nd], fi ⊖ fo) ∧ replay-safe(adr ', fs[adr, nd], 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
Used terms: fi ⊖ fo, fs[adr, nd], adr ', log