| st[r -- _type] = typeval(mkclasstype(class)), r ∈ st, ∀ sk. sk ∈ instfields(class) → goodfieldandtype(r, sk, st), r -- _type ∈ st, class+∃(str, class), mkfs(str2 .class, mkclasstype(str0 .class), str1 .field) ' ∈ instfields(class) ⊦ r = jvmref, is_abstract(class), is_referencevalue(st[r -- mkfs(str2 .class, mkclasstype(str0 .class), str1 .field) ']) |
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ goodfieldandtype (r, mkfs(class1, ty, fieldvar) ', st) ↔ r -- mkfs(class1, ty, fieldvar) ' ∈ st ∧ okval (st[ r -- mkfs (class1, ty, fieldvar) '], ty)], [CSIMPSEQ : ⊦ okval(val, mkclasstype(class1)) ↔ is_referencevalue(val)])], [EXTRATERMS : (mkfs (str2 .class, mkclasstype(str0 .class), str1 .field) ')]]