| has_classtype(st[r -- _type] .type), ¬ has_classtype(st[r -- _type] .type) ∨ tdname+∃(str0, st[r -- _type] .type .jtclass), 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, tdname+∃(str, st[r -- _type] .type .jtelemtype .class) |
has_classtype(st[r -- _type] .type), same-subclasses(st[r -- _type] .type .jtelemtype .class, str, str0), is_array(r, st), tdname+∃(str0, st[r -- _type] .type .jtelemtype .class) ⊦ st[r -- _type] .type .jtelemtype = abstract_type, st[r -- _type] .type .jtelemtype = void_type, tdname+∃(str, st[r -- _type] .type .jtelemtype .class)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ty .jtclass = ty .jtelemtype .class])]]