| r0 -- _type ∈ addobj(r, class, [], st), is_typevalue(addobj(r, class, [], st)[r0 -- _type]), compatrefs(str, st), compatstatic(str, st), compatmode(str, st), newref(r, st), is_predefined_class(class), r0 ∈ addobj(r, class, [], st) ⊦ r0 = jvmref, r = jvmref, ( is_classtype((addobj(r, class, [], st)[r0 -- _type]) .type) ∧ class+∃(str, (addobj(r, class, [], st)[r0 -- _type]) .type .class) → compatobj(str, r0, addobj(r, class, [], st))) ∧ ( is_arraytype((addobj(r, class, [], st)[r0 -- _type]) .type) ∧ ( ¬ has_classtype((addobj(r, class, [], st)[r0 -- _type]) .type) ∨ tdname+∃(str, (addobj(r, class, [], st)[r0 -- _type]) .type .type .jtelemtype .class)) → compatarray(str, r0, addobj(r, class, [], st))) |
(addobj(r, class, [], st)[r0 -- _type]) = typeval(ty), r0 -- _type ∈ addobj(r, class, [], st), is_typevalue(addobj(r, class, [], st)[r0 -- _type]), compatrefs(str, st), compatstatic(str, st), compatmode(str, st), newref(r, st), is_predefined_class(class), r0 ∈ addobj(r, class, [], st) ⊦ r0 = jvmref, r = jvmref, (is_classtype(ty) ∧ class+∃(str, ty .class) → compatobj(str, r0, addobj(r, class, [], st))) ∧ (is_arraytype(ty) ∧ (¬ has_classtype(ty) ∨ tdname+∃(str, ty .type .jtelemtype .class)) → compatarray(str, r0, addobj(r, class, [], st)))
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_typevalue(val) → ( ty = val .type ↔ val = typeval(ty))])], [EXTRATERMS : (addobj(r, class, [], st)[r0 -- _type], ty)]]