| rkvs .last = rk0 × val0, ∀ val, rk, st, rkvs0. # rkvs0 < # rkvs → (true → (st[rk, val][rkvs0]) = (st[rkvs0][rk, val]) ∨ rk ∈ rkvs0) ⊦ rkvs = [], (st[rk, val][rkvs .butlast][rk0, val0]) = (st[rkvs][rk, val]), rk ∈ rkvs |
rkvs = rkvs1 + rkv ', rkv = rk0 × val0, ∀ val, rk, st, rkvs0. # rkvs0 < # rkvs → (true → (st[rk, val][rkvs0]) = (st[rkvs0][rk, val]) ∨ rk ∈ rkvs0) ⊦ rkvs = [], (st[rk, val][rkvs1][rk0, val0]) = (st[rkvs][rk, val]), rk ∈ rkvs
[[CONCRETESIMPRULES : ([CSIMPELIM : rkvs ≠ [] ⊦ rkv = rkvs .last ∧ rkvs0 = rkvs .butlast ↔ rkvs = rkvs0 + rkv '])], [EXTRATERMS : (rkvs, rkv, rkvs1)]]