| # kx = # ax, new(ax, fs), key ∈ ri, kx.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ dups(ax), dups(kx), key-cons(key, fs[ax, fs[ri[kx]]][ri[key]]), key ∈ kx |
⊦ # ax = # ndx ∧ ¬ adr ∈ ax → fs[ax, ndx][adr] = fs[adr]
# kx = # ax, new(ax, fs), key ∈ ri, kx.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ dups(kx), dups(ax), key-cons(key, fs[ax, fs[ri[kx]]][ri[key]]), key ∈ kx, # ax = # fs[ri[kx]] ∧ ¬ ri[key] ∈ ax
# kx = # ax, # ax = # fs[ri[kx]], new(ax, fs), key ∈ ri, kx.toSet ⊆ dom ri, ∀ key. key ∈ ri → ri[key] ∈ fs ∧ key-cons(key, fs[ri[key]]) ⊦ dups(kx), dups(ax), key-cons(key, fs[ri[key]]), key ∈ kx, ri[key] ∈ ax
Used terms: ri[key], fs[ri[kx]], ax, fs