| ∀ fs, adr, ri. (replay-safe(log0, fs -- adr, ri) ↔ replay-safe(log0, fs, ri)) ∨ adr ∈ log0 ⊦ replay-safe(adr0 + log0, fs -- adr, ri) ↔ replay-safe(adr0 + log0, fs, ri), adr ∈ adr0 + log0 |
node-cons(fs[adr0].key, fs[adr0]), adr0 ∈ fs, ∀ fs, adr, ri. (replay-safe(log0, fs -- adr, ri) ↔ replay-safe(log0, fs, ri)) ∨ adr ∈ log0 ⊦ replay-safe(log0, fs -- adr, replay-one(adr0, fs[adr0], ri)) ↔ replay-safe(log0, fs, replay-one(adr0, fs[adr0], ri)), adr = adr0, adr0 ∈ ri, adr ∈ log0
Used simplifier rules: replay-safe-rec: ⊦ replay-safe(adr ' + log, fs, ri) ↔ adr ∈ fs ∧ ¬ adr ∈ ri ∧ node-cons(fs[adr].key, fs[adr]) ∧ replay-safe(log, fs, replay-one(adr, fs[adr], ri));% ⊦ adr ∈ adr0 ' + ax ↔ ¬(adr ≠ adr0 ∧ ¬ adr ∈ ax); (ss)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ adr ≠ adr0 → (fs -- adr0)[adr] = fs[adr]; (s)% ⊦ adr ∈ fs -- adr0 ↔ adr ≠ adr0 ∧ adr ∈ fs; (s)% ⊦ adr + ax = adr ' + ax; (s)