| sk = fs ', is_fskey(sk), oktype(val, ty, st), goodfieldandtype(r, sk, st) ⊦ mkfs(class0, ty, fieldvar) ' = _type, (r = r0 ∧ sk = mkfs(class0, ty, fieldvar) ' ∨ r -- sk ∈ st) ∧ oktype(((r = r0 ∧ sk = mkfs(class0, ty, fieldvar) ') ⊃ val; st[r -- sk]), fs .type, st) |
oktype(val, ty, st), goodfieldandtype(r, fs ', st) ⊦ mkfs(class0, ty, fieldvar) ' = _type, (r -- fs ' ∈ st ∨ r = r0 ∧ fs = mkfs(class0, ty, fieldvar)) ∧ oktype(((r = r0 ∧ fs = mkfs(class0, ty, fieldvar)) ⊃ val; st[r -- fs ']), fs .type, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ fs ' = fs0 ' ↔ fs = fs0], [CSIMPSEQ : ⊦ is_fskey(fs ')])]]