predicates solution