| st[r0 -- sks] = refval(r2), fits(r1, mkfs(class, ty, fieldvar) ' ', st), fits(r0, sks + mkfs(class0, ty0, fieldvar0) ' ', st), r1 ≠ r2 ∨ class ≠ class0 ∨ ty ≠ ty0 ∨ fieldvar ≠ fieldvar0 ⊦ (st[r1 -- mkfs(class, ty, fieldvar) ', val][r2 -- mkfs(class0, ty0, fieldvar0) ', val0]) = (st[r2 -- mkfs(class0, ty0, fieldvar0) ', val0][r1 -- mkfs(class, ty, fieldvar) ', val]), sks = [], is_referencevalue(val), is_referencevalue(val0), is_reftype(ty), is_reftype(ty0), junkref(str, r1, st), junkref(str, r0, st), mkfs(class, ty, fieldvar) ' ∈ sks |
⊦ rk ≠ rk0 → (st[rk0, val][rk, val0]) = (st[rk, val0][rk0, val])
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : refkey, , inj, ⊦ r -- sk = r0 -- sk0 ↔ r = r0 ∧ sk = sk0], [CSIMPNAMEDSEQ : storekey, , inj-03, ⊦ fs ' = fs0 ' ↔ fs = fs0], [CSIMPNAMEDSEQ : fieldspec, , inj, ⊦ mkfs(class, ty, fieldvar) = mkfs (class0, ty0, fieldvar0) ↔ class = class0 ∧ ty = ty0 ∧ fieldvar = fieldvar0])], [EXTRATERMS : (val0, r2 -- mkfs(class0, ty0, fieldvar0) ', val, r1 -- mkfs(class, ty, fieldvar) ', st)]]