| okval(refval(r), ty), r -- _type ∈ st, is_typevalue(st[r -- _type]), is_reftype(st[r -- _type] .type), asgcomp(str, refval(r), ty, st), r ∈ st, has_classtype(st[r -- _type] .type) → tdname+∃(str, st[r -- _type] .type .jtelemtype .class), is_classtype(st[r -- _type] .type) → class+∃(str, st[r -- _type] .type .class) ⊦ ty0 = void_type, r = jvmref, ( has_classtype(st[r -- _type] .type) → class∃(str, st[r -- _type] .type .jtelemtype .class) ∨ interface∃(str, st[r -- _type] .type .jtelemtype .class) ∨ is_predefined_class(st[r -- _type] .type .jtelemtype .class)) ∧ is_subtype(str, st[r -- _type] .type, ty) |
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)
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_typevalue(val) → ( ty = val .type ↔ val = typeval(ty))])], [EXTRATERMS : (st[r -- _type], ty1)]]