| ∀ val, rk, st, rkvs0. # rkvs0 < # rkvs → (true → (st[rk, val][rkvs0]) = (st[rkvs0][rk, val]) ∨ rk ∈ rkvs0) ⊦ (st[rk, val][rkvs]) = (st[rkvs][rk, val]), rk ∈ rkvs |
⊦ rkvs ≠ [] → st[rkvs] = (st[rkvs .butlast][rkvs .last .1, rkvs .last .2])
⊦ st[[]] = st
rkvs ≠ [], ∀ val, rk, st, rkvs0. # rkvs0 < # rkvs → (true → (st[rk, val][rkvs0]) = (st[rkvs0][rk, val]) ∨ rk ∈ rkvs0) ⊦ (st[rk, val][rkvs .butlast][rkvs .last .1, rkvs .last .2]) = (st[rkvs][rk, val]), rk ∈ rkvs
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (rkvs, st[rk, val])]]