| compat(str, refval(r), ty, st) ⊦ ty0 = void_type, (ty = void_type ∨ is_reftype(ty)) ∧ ( r ≠ jvmref → r -- _type ∈ st ∧ is_typevalue(st[r -- _type]) ∧ is_reftype(st[r -- _type] .type) ∧ ( 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_classtype(st[r -- _type] .type) → class+∃(str, st[r -- _type] .type .class)) ∧ is_subtype(str, st[r -- _type] .type, ty)) |
compat(str, refval(r), ty, st) ⊦ ty = void_type ∨ is_reftype(ty), ty0 = void_type
compat(str, refval(r), ty, st) ⊦ r ≠ jvmref → r -- _type ∈ st ∧ is_typevalue(st[r -- _type]) ∧ is_reftype(st[r -- _type] .type) ∧ ( 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_classtype(st[r -- _type] .type) → class+∃(str, st[r -- _type] .type .class)) ∧ is_subtype(str, st[r -- _type] .type, ty), ty0 = void_type
[[CONCRETESIMPRULES : ()]]