Functions

We also have to check the explicit predicates declared on the type.
Infer predicates for the items in the crate.