| st[r -- _type] = typeval(ty1), okval(refval(r), ty), r -- _type ∈ st, is_typevalue(st[r -- _type]), is_reftype(ty1), asgcomp(str, refval(r), ty, st), r ∈ st, has_classtype(ty1) → tdname+∃(str, ty1 .jtelemtype .class), is_classtype(ty1) → class+∃(str, ty1 .class) ⊦ ty0 = void_type, r = jvmref, (has_classtype(ty1) → class∃(str, ty1 .jtelemtype .class) ∨ interface∃(str, ty1 .jtelemtype .class) ∨ is_predefined_class(ty1 .jtelemtype .class)) ∧ is_subtype(str, ty1, ty) |
st[r -- _type] = typeval(ty1), r ∈ st, asgcomp(str, refval(r), ty, st), is_reftype(ty1), r -- _type ∈ st, okval(refval(r), ty), is_classtype(ty1) → class+∃(str, ty1 .class), has_classtype(ty1) → tdname+∃(str, ty1 .jtelemtype .class) ⊦ r = jvmref, ty0 = void_type, (has_classtype(ty1) → class∃(str, ty1 .jtelemtype .class) ∨ interface∃(str, ty1 .jtelemtype .class) ∨ is_predefined_class(ty1 .jtelemtype .class)) ∧ is_subtype(str, ty1, ty)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_typevalue(typeval(ty))])]]