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