| str ≠ str0 ⊦ (st[r -- mkfs(class, ty, str .field) ', val][r0 -- (mkfs(class0, ty0, str0 .field) ' ' + sk1 ')]) = (st[r -- mkfs(class, ty, str .field) ', val][st[r0 -- mkfs(class0, ty0, str0 .field) '] .refval -- sk1]) |
⊦ sk ≠ sk0 ∧ sks ≠ [] → (st[r -- sk, val][r0 -- (sk0 ' + sks)]) = (st[r -- sk, val][st[r0 -- sk0] .refval -- sks])
⊦ 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) ', r, st)]]