| # ax1 = # ax0, adr ∈ ri, ax1.toSet ⊆ range ri, ∀ ax, ri, fs, key. # ax0 = # ax ∧ ax1.toSet ⊆ range ri ∧ (∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]])) → (key ∈ ri[keys(fs, ax1), ax] ↔ key ∈ ri), ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ key ∈ ri[fs[adr].key, adr0] ∨ key ∈ keys(fs, ax1) ↔ key ∈ ri |
⊦ key ∈ ri[key0, adr] ↔ key = key0 ∨ key ∈ ri
# ax1 = # ax0, adr ∈ ri, ax1.toSet ⊆ range ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]), ∀ ax, ri, fs, key. # ax0 = # ax ∧ ax1.toSet ⊆ range ri ∧ (∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]])) → (key ∈ ri[keys(fs, ax1), ax] ↔ key ∈ ri) ⊦ (key = fs[adr].key ∨ key ∈ ri) ∨ key ∈ keys(fs, ax1) ↔ key ∈ ri
Used terms: adr0, fs[adr].key, ri, key