| key ∈ keys(fs, adr + ax0), ∀ key, fs. key ∈ keys(fs, ax0) → (∃ ax2, ax1, adr. ax0 = ax2 + adr ' + ax1 ∧ fs[adr].key = key ∧ ¬ fs[adr].key ∈ keys(fs, ax1)) ⊦ ∃ ax2, ax1, adr0. adr + ax0 = ax2 + adr0 ' + ax1 ∧ fs[adr0].key = key ∧ ¬ fs[adr0].key ∈ keys(fs, ax1) |
∀ key, fs. key ∈ keys(fs, ax0) → (∃ ax2, ax1, adr. ax0 = ax2 + adr ' + ax1 ∧ fs[adr].key = key ∧ ¬ fs[adr].key ∈ keys(fs, ax1)), key = fs[adr].key ∨ key ∈ keys(fs, ax0) ⊦ ∃ ax, ax1, adr0. adr ' + ax0 = ax + adr0 ' + ax1 ∧ fs[adr0].key = key ∧ ¬ fs[adr0].key ∈ keys(fs, ax1)
Used simplifier rules: 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 ∈ key0 ' + kx ↔ key = key0 ∨ key ∈ kx; (s)%a: ⊦ (ax + ax0) + ax1 = ax + ax0 + ax1; from specification list[address-list-set]% ⊦ key + kx = key ' + kx; (s)% ⊦ adr + ax = adr ' + ax; (s)