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