| ⊦ key ∈ keys(fs, ax) ↔ (∃ ax0, ax1, adr. ax = ax0 + adr ' + ax1 ∧ fs[adr].key = key ∧ ¬ key ∈ keys(fs, ax1)) |
key ∈ keys(fs, ax) ⊦ ∃ ax0, ax1, adr. ax = ax0 + adr ' + ax1 ∧ fs[adr].key = key ∧ ¬ fs[adr].key ∈ keys(fs, ax1)
Used simplifier rules: keys-append: ⊦ keys(fs, ax0 + ax1) = keys(fs, ax0) + keys(fs, ax1);%keys-rec: ⊦ keys(fs, adr ' + ax) = fs[adr].key + keys(fs, ax);%a: ⊦ (kx + kx0) + kx1 = kx + kx0 + kx1; from specification list[key-list-set]% ⊦ ¬ key ∈ kx → (key ∈ key0 ' + kx ↔ key = key0); (s)% ⊦ key ∈ kx + kx0 ↔ key ∈ kx ∨ key ∈ kx0; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ key + kx = key ' + kx; (s)