3. Instantiation, predicate
Consider the Prolog database from the previous page:
- Fact: spouse (john, jane)
- Fact: spouse (david, mary)
- Fact: spouse(george, susan)
- Fact: female (jane)
- Fact: female (mary)
- Fact: female (susan)
- Fact: male (john)
- Fact: male (david)
- Fact: male (george)
- Rule: husband(A,B) IF spouse(A,B) AND male (A)
- Rule: wife (A,B) IF spouse(A,B) AND female(B)
In the examples discussed so far, the goal
The wife part is called the 'predicate'. The predicate is a logic statement that will be checked to determine if it is true or false. If it is true, a specific value will be returned.
For example, the predicate
is certainly false as far as this database is concerned as there is no such fact or rule for 'son'.
The predicate contains 'arguments' that need to be checked. So david and mary are the arguments of the predicate 'wife'.
Prediicates that may find a match within this database are
spouse female male husband wife
A predicate can be declared with an unassigned value, like so
The 'A' argument is unassigned. This is asking the predicate logic question: "Does Mary have a spouse and if so, return the name of the spouse?"
The database will be scanned, the predicate is found to be true and 'david' is returned as 'A'.
The technical term to describe assigning values to the arguments of a predicate from within the database is called 'instantiation'
The predicate: female(A) within this database can have the 'A' argument instantiated to any matching fact. In this case, the predicate can be instantiated to
jane mary susan
Copyright © www.teach-ict.com