Search process used by Prolog. If a
predicate offers multiple
clauses to solve
a goal, they are
tried one-by-one until one succeeds.
If a subsequent part of the proof is not satisfied with the resulting variablebinding,
it may ask for an alternative solution
(= binding of
the variables),
causing Prolog to reject the previously chosen clause
and try the next one.

A choice point
represents a choice in the search for a solution.
Choice points are created if multiple clauses match a query
or using disjunction (;/2).
On backtracking,
the execution state of the most recent choice point
is restored and search continues with the next alternative (i.e., next
clause or second branch of
;/2).

As opposed to compiled,
interpreted means the Prolog system attempts to prove a goal
by directly reading the clauses
rather than executing instructions from an (abstract) instruction set
that is not or only indirectly related to Prolog.

Collection of predicates. Each module
defines a name-space for predicates. built-in
predicates are accessible from all modules. Predicates can be published
(exported) and imported
to make their definition available to other modules.

Variable
appearing only one time in a clause.
SWI-Prolog normally warns for this to avoid you making spelling
mistakes. If a variable appears on purpose only once in a clause, write
it as _ (see anonymous).
Rules for naming a variable and avoiding a warning are given in section
2.15.2.5.

How
Prolog behaves when a dynamicpredicate
is changed while it is running. There are two models. In most older
Prolog systems the change becomes immediately visible to the goal,
in modern systems including SWI-Prolog, the running goal
is not affected. Only new goals
`see' the new definition.

A Prolog variable is a value that `is not
yet bound'. After binding
a variable, it cannot be modified. Backtracking
to a point in the execution before the variable was bound will turn it
back into a variable: