| ∀ st, r, sk, val, r0. (st[r -- sk, val][r0 -- sks0]) = st[r0 -- sks0] ∨ sk ∈ sks0 ⊦ sk = sk0, sks0 = [], (st[r -- sk, val][st[r0 -- sk0] .refval -- sks0]) = st[r0 -- (sk0 ' + sks0)], sk ∈ sks0 |
⊦ sks ≠ [] → st[r -- (sk ' + sks)] = st[st[r -- sk] .refval -- sks]
sks0 ≠ [], ∀ st, r, sk, val, r0. (st[r -- sk, val][r0 -- sks0]) = st[r0 -- sks0] ∨ sk ∈ sks0 ⊦ sk = sk0, sks0 = [], (st[r -- sk, val][st[r0 -- sk0] .refval -- sks0]) = st[st[r0 -- sk0] .refval -- sks0], sk ∈ sks0
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (sks0, sk0, r0, st)]]