| unchanged(str, r, st, st0), fits(r, sk ' + sks0, st0), fits(r, sk ' + sks0, st), ∀ r, st0, st, str. fits(r, sks0, st0) ∧ fits(r, sks0, st) ∧ unchanged(str, r, st, st0) → st[r -- sks0] = st0[r -- sks0] ∨ junkref(str, r, st) ∨ junkref(str, r, st0) ⊦ st[r -- (sk ' + sks0)] = st0[r -- (sk ' + sks0)], junkref(str, r, st), junkref(str, r, st0) |
⊦ sks ≠ [] → st[r -- (sk ' + sks)] = st[st[r -- sk] .refval -- sks]
¬ sks0 ≠ [], unchanged(str, r, st, st0), fits(r, sk ' + sks0, st0), fits(r, sk ' + sks0, st), ∀ r, st0, st, str. fits(r, sks0, st0) ∧ fits(r, sks0, st) ∧ unchanged(str, r, st, st0) → st[r -- sks0] = st0[r -- sks0] ∨ junkref(str, r, st) ∨ junkref(str, r, st0) ⊦ st[r -- (sk ' + sks0)] = st0[r -- (sk ' + sks0)], junkref(str, r, st), junkref(str, r, st0)
sks0 ≠ [], unchanged(str, r, st, st0), fits(r, sk ' + sks0, st0), fits(r, sk ' + sks0, st), ∀ r, st0, st, str. fits(r, sks0, st0) ∧ fits(r, sks0, st) ∧ unchanged(str, r, st, st0) → st[r -- sks0] = st0[r -- sks0] ∨ junkref(str, r, st) ∨ junkref(str, r, st0) ⊦ st[st[r -- sk] .refval -- sks0] = st0[r -- (sk ' + sks0)], junkref(str, r, st), junkref(str, r, st0)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (sks0, sk, r, st)]]