type predicates