| ∀ key, fs. key ∈ keys(fs, ax0) ↔ (∃ adr. adr ∈ ax0 ∧ fs[adr].key = key) ⊦ key ∈ keys(fs, adr + ax0) ↔ (∃ adr0. adr0 ∈ adr + ax0 ∧ fs[adr0].key = key) |
∀ key, fs. key ∈ keys(fs, ax0) ↔ (∃ adr. adr ∈ ax0 ∧ fs[adr].key = key) ⊦ key = fs[adr].key ∨ key ∈ keys(fs, ax0) ↔ (∃ adr0. (adr0 = adr ∨ adr0 ∈ ax0) ∧ fs[adr0].key = key)
Used simplifier rules: ⊦ adr ∈ adr0 ' + ax ↔ adr = adr0 ∨ adr ∈ ax; (s)%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)% ⊦ keys(fs, adr ' + ax) = fs[adr].key + keys(fs, ax); (s)% ⊦ adr + ax = adr ' + ax; (s)