- Prolog - Home
- Prolog - Introduction
- Prolog - Environment Setup
- Prolog - Hello World
- Prolog - Basics
- Prolog - Relations
- Prolog - Data Objects
- Loop & Decision Making
- Conjunctions & Disjunctions
Prolog Operators
- Prolog - Type of Operators
- Prolog - Arithmetic Comparison Operators
- Prolog - Unification Operators
- Prolog - Term Comparision Operators
- Prolog - Arithmetic Operators
- Prolog - Logical Operators
- Prolog - List Operators
- Prolog - Custom Operators
Prolog Lists
- Prolog - Lists
- Prolog - Member of List
- Prolog - Length of List
- Prolog - Concatenating Lists
- Prolog - Appending to a List
- Prolog - Deleting from a List
- Prolog - Inserting into a List
- Prolog - Permutation Operation
- Prolog - Combination Operation
- Prolog - Reverse Items of a List
- Prolog - Shift Items of a List
- Prolog - Check Order of a List
- Prolog - SubSet of a Set
- Prolog - Union of Sets
- Prolog - Intersection of Sets
- Prolog - Even and Odd Length Finding
- Prolog - Divide a List
- Prolog - Find Maximum of a List
- Prolog - Find Minimum of a List
- Prolog - Find Sum of a List
- Prolog - Sorting List using MergeSort
Built-In Predicates
- Prolog - Built-In Predicates
- Prolog - Identifying Terms
- Prolog - Decomposing Structures
- Prolog - Collecting All
- Prolog - Mathematical Predicates
- Prolog - Scientific Predicates
Miscellaneous
- Recursion and Structures
- Prolog - Backtracking
- Prolog - Preventing Backtracking
- Prolog - Different and Not
- Prolog - Inputs and Outputs
- Tree Data Structure (Case Study)
- Prolog - Examples
- Prolog - Basic Programs
- Prolog - Practical Arithmetic Examples
- Prolog - Examples of Cuts
- Towers of Hanoi Problem
- Prolog - Linked Lists
- Monkey and Banana Problem
- Prolog Useful Resources
- Prolog - Quick Guide
- Prolog - Useful Resources
- Prolog - Discussion
Prolog - Built-In Predicates
In Prolog, we have seen the user defined predicates in most of the cases, but there are many built-in-predicates as well. There are mainly following types of built-in predicates as given below −
Identifying terms
Decomposing structures
Collecting all solutions
Mathematical
Scientific
Identifying Terms Predicates Group
So this is the list of some predicates that are falls under the identifying terms group −
| Predicate | Description |
|---|---|
| var(X) | succeeds if X is currently an un-instantiated variable. |
| novar(X) | succeeds if X is not a variable, or already instantiated |
| atom(X) | is true if X currently stands for an atom |
| number(X) | is true if X currently stands for a number |
| integer(X) | is true if X currently stands for an integer |
| float(X) | is true if X currently stands for a real number. |
| atomic(X) | is true if X currently stands for a number or an atom. |
| compound(X) | is true if X currently stands for a structure. |
Decomposing Structures
Now we will see, another group of built-in predicates, that is Decomposing structures. We have seen the identifying terms before. So when we are using compound structures we cannot use a variable to check or make a functor. It will return error. So functor name cannot be represented by a variable.
Error
| ?- X = tree, Y = X(maple).
uncaught exception: error(syntax_error('user_input:6 (char:16) . or operator expected after expression'),read_term/3)
| ?-
Decomposing structure predicates are used to check Functors of terms. Following is the list of important decomposing structures predictates.
| Predicate | Description |
|---|---|
| functor(T,F,N) | returns true if F is the principal functor of T, and N is the arity of F. |
| arg(N,Term,A) | returns true if A is the Nth argument in Term. Otherwise returns false. |
| ..L | returns true if L is a list that contains the functor of Term, followed by its arguments. |
Collecting All Solutions
Now let us see the third category called the collecting all solutions, that falls under built-in predicates in Prolog.
We have seen that to generate all of the given solutions of a given goal using the semicolon in the prompt. So here is an example of it.
Example
| ?- member(X, [1,2,3,4]). X = 1 ? ; X = 2 ? ; X = 3 ? ; X = 4 (16 ms) yes | ?-
Sometimes, we need to generate all of the solutions to some goal within a program in some AI related applications. So there are three built-in predicates that will help us to get the results. These predicates are as follows −
| Predicate | Description |
|---|---|
| findall/3 | This predicate is used to make a list of all solutions X, from the predicate P. |
| setoff/3 | Similar to findall/3, but it removes all of the duplicate outputs, and the returns the sorted answers. |
| bagof/3 | Similar to setoff/3, but duplicates are retained, and the answers may not be sorted. |
These three predicates take three arguments, so we have written /3 after the name of the predicates.
These are also known as meta-predicates. These are used to manipulate Prolog's Proof strategy.
Mathematical Predicates
Following are the mathematical predicates −
| Predicates | Description |
|---|---|
| random(L,H,X). | Get random value between L and H |
| between(L,H,X). | Get all values between L and H |
| succ(X,Y). | Add 1 and assign it to X |
| abs(X). | Get absolute value of X |
| max(X,Y). | Get largest value between X and Y |
| min(X,Y). | Get smallest value between X and Y |
| round(X). | Round a value near to X |
| truncate(X). | Convert float to integer, delete the fractional part |
| loor(X). | Round down |
| ceiling(X). | Round up |
| sqrt(X). | Square root |
Scientific Predicates
Following are the scientific predicates −
| Predicates | Description |
|---|---|
| sin(X). | Sine of X where X is in radians. |
| cos(X). | Cosine of X where X is in radians. |
| tan(X). | Tangent of X where X is in radians. |
| asin(X). | Arcsine of X where X is in radians. |
| acos(X). | Arccosine of X where X is in radians. |
| atan(X) | Arctangent of X where X is in radians. |
| sinh(X) | Hyperbolic Sine of X where X is in radians. |
| cosh(X). | Hyperbolic Cosine of X where X is in radians. |
| tanh(X) | Hyperbolic Tangent of X where X is in radians. |
| asinh(X). | Hyperbolic Arcsine of X where X is in radians. |
| acosh(X) | Hyperbolic Arccosine of X where X is in radians. |
| atanh(X) | Hyperbolic Arctangent of X where X is in radians. |
| log(X) | Log of X |
| log10(X) | Log10 of X |
| exp(X) | Exponential of X |