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