| # ax0 = # kx1, new(ax0, fs), key1 ∈ ri, key ∈ ri, kx1.toSet ⊆ dom ri, ∀ kx0, fs0, key0, ri0. # kx1 = # kx0 ∧ new(ax0, fs0) ∧ key0 ∈ ri0 ∧ kx0.toSet ⊆ dom ri0 ∧ (∀ key. key ∈ ri0 → ri0[key] ∈ fs0 ∧ key-cons(key, fs0[ri0[key]])) → fs0[ax0, fs0[ri0[kx0]]][ri0[kx0, ax0][key0]] = fs0[ri0[key0]] ∨ dups(kx0), ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ fs[ax0, fs[ri[kx1]]][adr, fs[ri[key1]]][ri[kx1, ax0][key]] = fs[ri[key]], key = key1, dups(kx1), dups(ax0), adr ∈ fs, adr ∈ ax0, key1 ∈ kx1 |
# ax0 = # kx1, new(ax0, fs), key ∈ ri, key1 ∈ ri, kx1.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]), ∀ kx0, fs0, key0, ri0. # kx1 = # kx0 ∧ new(ax0, fs0) ∧ key0 ∈ ri0 ∧ kx0.toSet ⊆ dom ri0 ∧ (∀ key. key ∈ ri0 → ri0[key] ∈ fs0 ∧ key-cons(key, fs0[ri0[key]])) → fs0[ax0, fs0[ri0[kx0]]][ri0[kx0, ax0][key0]] = fs0[ri0[key0]] ∨ dups(kx0) ⊦ fs[ax0, fs[ri[kx1]]][adr, fs[ri[key1]]][ri[kx1, ax0][key]] = fs[ri[key]], key = key1, dups(ax0), dups(kx1), key1 ∈ kx1, adr ∈ ax0, adr ∈ fs