| type∃(str0, st[r -- _type] .type), same-subclasses(st[r -- _type] .type .jtelemtype .class, str, str0), is_array(r, st) ⊦ st[r -- _type] .type .jtelemtype = abstract_type, st[r -- _type] .type .jtelemtype = void_type, type∃(str, st[r -- _type] .type) |
⊦ type∃(str, ty) ↔ ¬ has_classtype(ty) ∨ tdname+∃(str, ty .jtclass)
type∃(str0, st[r -- _type] .type), same-subclasses(st[r -- _type] .type .jtelemtype .class, str, str0), is_array(r, st) ⊦ st[r -- _type] .type .jtelemtype = abstract_type, st[r -- _type] .type .jtelemtype = void_type, ¬ has_classtype(st[r -- _type] .type) ∨ tdname+∃(str, st[r -- _type] .type .jtclass)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st[r -- _type] .type, str)]]