Prolog/Glossary
< Prolog
This is a glossary of common Prolog terms[1].
- Argument
- Arguments are terms that appear in a compound term. E.g. A1 and a2 are the first and the second argument of the term
myterm(A1, a2)
. - Arity
- The number of arguments that a predicate takes. E.g.
member(X,List)
has arity 2. In documentation, the arity of a predicate is written as predicate/arity. E.g.member/2
. - Backtracking
- If a sub-goal fails, the built-in Prolog search mechanism will go back to the parent-goal. Any variables that were instantiated in the sub-goal will be un-instantiated. Prolog will then search for a new way of satisfying the sub-goal. This process is called backtracking.
- Clause
- A single clause of a relation, usually defined as Head :- Body, but see also fact.
- Compound term
Also called structure. It consists of a name followed by N arguments, each of which are terms. N is called the arity of the term.
- Fact
- A clause with no body, that is a head on its own.
- Functor
- Combination of name and arity of a compound term. The term
foo(a, b, c)
is said to be a term belonging to the functor foo/3 . foo/0 is used to refer to the atom foo. - Goal
- Question stated to the Prolog engine. A goal is either an atom or a compound term. A goal succeeds, in which case the variables in the compound terms have a binding or fails if Prolog fails to prove the goal.
- Ground Term
- A Term which has no logic variables in it.
- Predicate
- A set of clauses or a relation.
- Query
- See goal.
- Relation
- Synonym for Predicate.
- Recursion/Recursive
- Definition missing
- Rule
- See clause.
- Term
- Every object in Prolog is a term, that includes variables, compounds, numbers, source code.
- Unification
- Prolog process to make two terms equal by assigning variables in one term to values at the corresponding location of the other term. E.g.,
?- foo(a, B) = foo(A, b).
Unlike assignment, which does not exist in Prolog, unification is not directed.
A = a,
B = b.
- Singleton Variable
- If a variable is named only once in a clause, usually it is replace with _.
Footnotes
edit