| 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]), sk .fs .type, st) |
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)
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_fskey(sk) → (fs = sk .fs ↔ sk = fs ')])], [EXTRATERMS : (sk, fs)]]