Predicate Typing

See PredicateTypes