recursive predicates v2