List of built-in predicates in ISO Prolog.

## Contents

## Term unificationEdit

- =/2
- Prolog unification
- unify_with_occurs_check/2
- (\=)/2
- Not Prolog unifiable

## Type testingEdit

- var/1
- True if term currently is a variable
- atom/1
- True if term is bound to an atom
- integer/1
- True if term is bound to an integer
- float/1
- True if term is bound to a floating point number
- atomic/1
- True if term is bound to an atom, integer or floating point number
- compound/1
- True if term is bound to a compound term
- nonvar/1
- True if term is not a variable
- number/1
- True if term is bound to an integer or floating point number

## Term comparisonEdit

- (@=<)/2
- Term less than or equal to
- (==)/2
- Term identical
- (\==)/2
- Term not identical
- (@<)/2
- Term less than
- (@>)/2
- Term greater than
- (@>=)/2
- Term greater than or equal to

## Term creation and decompositionEdit

- functor/3
- arg/3
- (=../2)
- copy_term/2

## Arithmetic evaluationEdit

- is/2

## Arithmetic comparisonEdit

- '=:='/2
- Arithmetic equal
- '=\='/2
- Arithmetic not equal
- '<'/2
- Arithmetic less than
- '=<'/2
- Arithmetic less than or equal to
- '>'/2
- Arithmetic greater than
- '>='/2
- Arithmetic greater than or equal to

## ClausesEdit

### Clause retrieval and informationEdit

- clause/2
- current_predicate/1

### Clause creation and destructionEdit

- asserta/1
- assertz/1
- retract/1
- abolish/1

## All solutionsEdit

- findall/3
- bagof/3
- setof/3

## Input and outputEdit

### Stream selection and controlEdit

- current_input/1
- current_output/1
- set_input/1
- set_output/1
- open/4, open/3
- Opening a stream
- close/1, close/2
- Closing a stream
- stream_property/2
- at_end_of_stream/1, at_end_of_stream/0
- set_stream_position/2

### Character input-outputEdit

- get_char/2, get_char/1
- get_code/2, get_code/1
- peek_char/2, peek_char/1
- peek_code/2, peek_code/1
- put_char/2, put_char/1
- put_code/2, put_code/1
- nl/0, nl/1

### Reading from binary streamsEdit

- get_byte/2, get_byte/1
- peek_byte/2, peek_byte/1
- put_byte/2, put_byte/1

### Term input and outputEdit

- read_term/2, read_term/3
- read/1, read/2

### Writing termsEdit

- write_term/3, write_term/2
- write/1, write/2
- writeq/1, writeq/2
- write_canonical/1, write_canonical/2

## OperatorsEdit

- op/3
- current_op/3

## Character conversionEdit

- char_conversion/2
- current_char_conversion/2

## Logic and controlEdit

- (\+)/1
- Not provable
- once/1
- repeat/0

## Atom processingEdit

- atom_length/2
- atom_concat/3
- sub_atom/5
- atom_chars
- atom_codes/2
- char_code/2
- number_chars/2
- number_codes/2

## Implementation defined hooksEdit

- set_prolog_flag/2
- current_prolog_flag/2
- halt/0, halt/1

## FunctorsEdit

### Evaluable functorsEdit

- (+)/2
- Addition
- (-)/2
- Subtraction
- (*)/2
- Multiplication
- (//)/2
- Integer division
- (/)/2
- Division
- (rem)/2
- Remainder
- (mod)/2
- Modulus
- (-)/1
- Negation
- (abs)/1
- Absolute value
- (sign)/1
- Sign
- (float_integer_part)/1
- Integer part
- (float_fractional_part)/1
- Fractional part
- (float)/1
- Float coercion
- (floor)/1
- Floor
- (truncate)/1
- Truncate
- (round)/1
- Round
- (ceiling)/1
- Ceiling

### Other arithmetic and bitwise functorsEdit

- (**)/2
- Power
- sin/1
- Sine
- cos/1
- Cosine
- atan/1
- Arc tangent
- exp/1
- Exponentiation
- log/1
- Log
- sqrt/1
- Square root
- (>>)/2
- Bitwise right shift
- (<<)/2
- Bitwise left shift
- (/\)/2
- Bitwise and
- (\/)/2
- Bitwise or
- (\)/1
- Bitwise complement