| fs0 | (ax.toSet ++ adr) = fs1 | (ax.toSet ++ adr) ⊦ fs0 | ax.toSet = fs1 | ax.toSet, fs0[adr].key = fs1[adr].key ∧ keys(fs0, ax) = keys(fs1, ax) |
⊦ fs = fs0 ↔ (∀ adr. (adr ∈ fs ↔ adr ∈ fs0) ∧ fs[adr] = fs0[adr])
∀ adr0. (adr0 ∈ fs0 | (ax.toSet ++ adr) ↔ adr0 ∈ fs1 | (ax.toSet ++ adr)) ∧ (fs0 | (ax.toSet ++ adr))[adr0] = (fs1 | (ax.toSet ++ adr))[adr0] ⊦ fs0 | ax.toSet = fs1 | ax.toSet, fs0[adr].key = fs1[adr].key ∧ keys(fs0, ax) = keys(fs1, ax)
Used terms: fs1 | (ax.toSet ++ adr), fs0 | (ax.toSet ++ adr)