| (fs0 | (ax.toSet ++ adr))[adr0] = (fs1 | (ax.toSet ++ adr))[adr0], adr0 = adr ∨ adr0 ∈ ax → (adr0 ∈ fs0 ↔ adr0 ∈ fs1) ⊦ (fs0 | ax.toSet)[adr0] = (fs1 | ax.toSet)[adr0], fs0[adr].key = fs1[adr].key ∧ keys(fs0, ax) = keys(fs1, ax), adr0 ∈ fs0 ∧ adr0 ∈ ax |
⊦ ¬ adr ∈ fs → fs[adr] = (∅)[adr]
(fs0 | (ax.toSet ++ adr))[adr0] = (fs1 | (ax.toSet ++ adr))[adr0], adr0 = adr ∨ adr0 ∈ ax → (adr0 ∈ fs0 ↔ adr0 ∈ fs1) ⊦ (∅)[adr0] = (fs1 | ax.toSet)[adr0], adr0 ∈ fs0 | ax.toSet, adr0 ∈ fs0 ∧ adr0 ∈ ax, fs0[adr].key = fs1[adr].key ∧ keys(fs0, ax) = keys(fs1, ax)
Used simplifier rules: ⊦ adr ∈ fs | as ↔ adr ∈ fs ∧ adr ∈ as; (ws)% ⊦ adr ∈ ax.toSet ↔ adr ∈ ax; (s) Used terms: adr0, fs0 | ax.toSet