| ⊦ str = str0, (st[r -- (sks + mkfs(class, ty, str .field) ' '), val][r0 -- (mkfs(class0, ty0, str0 .field) ' ' + sk1 ')]) = (st[r -- (sks + mkfs(class, ty, str .field) ' '), val][st[r0 -- mkfs(class0, ty0, str0 .field) '] .refval -- sk1]) |
⊦ sk ≠ sk0 ∧ sks0 ≠ [] → (st[r -- (sks + sk '), val][r0 -- (sk0 ' + sks0)]) = (st[r -- (sks + sk '), val][st[r0 -- sk0] .refval -- sks0])
⊦ st[r -- sk '] = st[r -- sk]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) = mkfs(class0, ty0, fieldvar0) ↔ class = class0 ∧ ty = ty0 ∧ fieldvar = fieldvar0], [CSIMPSEQ : ⊦ sk ' ≠ []], [CSIMPSEQ : ⊦ fs ' = fs0 ' ↔ fs = fs0], [CSIMPSEQ : ⊦ mkfs(class1, ty, fieldvar) = mkfs(class2, ty0, fieldvar0) ↔ ¬ ¬ ( class1 = class2 ∧ ty = ty0 ∧ fieldvar = fieldvar0)], [CSIMPSEQ : ⊦ stringvar .field = stringvar0 .field ↔ stringvar = stringvar0])], [EXTRATERMS : (sk1 ', mkfs(class0, ty0, str0 .field) ', r0, val, mkfs(class, ty, str .field) ', sks, r, st)]]