| # ax = #(key0 + kx) + # kx1 + 1, ∀ ax, kx1, ri, key. # ax = # kx + # kx1 + 1 → ri[kx + key ' + kx1, ax][key] = ax[# kx] ∨ key ∈ kx1 ⊦ ri[(key0 + kx) + key ' + kx1, ax][key] = ax[#(key0 + kx)], key ∈ kx1 |
# ax = 2 + # kx + # kx1, ∀ ax, kx1, ri, key. # ax = # kx + # kx1 + 1 → ri[kx + key ' + kx1, ax][key] = ax[# kx] ∨ key ∈ kx1 ⊦ ri[(key0 ' + kx) + key ' + kx1, ax][key] = ax[# kx + 1], key ∈ kx1
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%a: ⊦ (kx + kx0) + kx1 = kx + kx0 + kx1; from specification list[key-list-set]% ⊦ m +1 = m + 1; (s)% ⊦ #(key ' + kx) = (# kx)+1; (s)% ⊦ key + kx = key ' + kx; (s)