| contains(str, ty .jtelemtype, ty0) → contains(str, ty, ty0), type∃(str, ty0) ∧ (is_classtype(ty0) ∨ is_arraytype(ty0)) ∧ is_arraytype(ty) ∨ contains(str, mkclasstype(`java.lang.Object' .class), ty0), ty .jtelemtype = mkclasstype(`java.lang.Object' .class) ⊦ contains(str, ty, ty0) |
ty .type .jtelemtype = mkclasstype(`java.lang.Object' .class), type∃(str, ty0), is_arraytype(ty), is_classtype(ty0) ∨ is_arraytype(ty0) ⊦ contains(str, mkclasstype(`java.lang.Object' .class), ty0), contains(str, ty, ty0)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_arraytype(ty) → ty .jtelemtype = ty .type .jtelemtype])]]