Predicates that produce side effects leave the realm of pure logic. These are for example:
writeq/1read/1format/2Side effects are phenomena that cannot be reasoned about within the program. For example, deletion of a file or output on the system terminal.
Predicates that reason about instantiations are called meta-logical. Examples are:
var/1ground/1integer/1These predicates are outside the realm of pure monotonic logic programs, because they break properties like commutativity of conjunction.
Other predicates that are meta-logical include:
arg/3functor/3(=..)/2These predicates could in principle be modeled within first-order logic, but require an infinite number of clauses.
Predicates that reason about all solutions are extra-logical. These are for example:
setof/3findall/3bagof/3Predicates that impede or prohibit a declarative reading of Prolog programs are extra-logical. Examples of such predicates are:
!/0(->)/2 and if-then-else(\+)/1These predicates can only be understood procedurally, by taking into account the actual control flow of the interpreter, and as such are beyond the realm of pure logic.