Contracts are predicates (Fixes #53)
Automatically generates predicates for ADTs/Protocols (Fixes #42)