The predicate calculus includes a wider range of entities. It permits the description of relations and the use of variables. It also requires an understanding of quantification.
The language of predicate calculus requires:
The last two logical constants are additions to the logical connectives of propositional calculus ---they are known as quantifiers. The non-logical constants include both the `names' of entities that are related and the `names' of the relations. For example, the constant dog might be a relation and the constant fido an entity.
If there are no arguments then we can regard the `predicate' as standing for a statement à la the propositional calculus.
Note that the word ``and'' used in the left hand column is used to suggest that we have more than one formula for combination ---and not necessarily a conjunction.
In the last two examples, ``dog(X)'' contains a variable which is said to be free while the ``X'' in ``X.dog(X)'' is bound.
Two informal examples to illustrate quantification follow:
The former is an example of universal quantification and the latter of existential quantification.
We can now represent the problem we initially raised:
X.(dog(X)smelly(X))dog(fido)smelly(fido)
To verify that this is correct requires that we have some additional machinery which we will not discuss here.