Adding the predicates -- generate error when the predicate already exists with the same arguments

We will need to verify that all constant and predicate types are defined in :types