| 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 ' + keys(fs0, ax) = fs1[adr].key ' + keys(fs1, ax) |
kx ≠ [] ⊦ key ' + kx0 = kx + kx1 ↔ key = kx.head ∧ kx0 = kx.tail + kx1
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)
Used simplifier rules: ⊦ key ' ≠ []; (s) Used terms: keys(fs1, ax), fs1[adr].key ', keys(fs0, ax), fs0[adr].key