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