| fs0 | (ax.toSet ++ adr) = fs1 | (ax.toSet ++ adr), ∀ fs0, fs1. fs0 | ax.toSet = fs1 | ax.toSet → keys(fs0, ax) = keys(fs1, ax) ⊦ fs1[adr].key ' = [], fs0[adr].key = fs1[adr].key '.head ∧ keys(fs0, ax) = fs1[adr].key '.tail + keys(fs1, ax) |
fs0 | (ax.toSet ++ adr) = fs1 | (ax.toSet ++ adr), ∀ fs0, fs1. fs0 | ax.toSet = fs1 | ax.toSet → keys(fs0, ax) = keys(fs1, ax) ⊦ fs0[adr].key = fs1[adr].key ∧ keys(fs0, ax) = keys(fs1, ax)
Used simplifier rules: a: ⊦ (kx + kx0) + kx1 = kx + kx0 + kx1; from specification list[key-list-set]% ⊦ [] + kx = kx; (s)% ⊦ key '.tail = []; (s)% ⊦ key '.head = key; (s)% ⊦ key ' ≠ []; (s)