| ∀ 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) |
⊦ 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] ⊦ ∀ adr. (adr ∈ fs0 | ax.toSet ↔ adr ∈ fs1 | ax.toSet) ∧ (fs0 | ax.toSet)[adr] = (fs1 | ax.toSet)[adr], fs0[adr].key = fs1[adr].key ∧ keys(fs0, ax) = keys(fs1, ax)
Used terms: fs1 | ax.toSet, fs0 | ax.toSet