Contents
1 Acknowledgements
2 GNU Prolog License Conditions
3 Introduction
4 Using GNU Prolog
5 Debugging
6 Format of definitions
7 Prolog directives and control constructs
8 Prolog built-in predicates
8.1 Type testing
8.1.1 var/1 ,
nonvar/1 ,
atom/1 ,
integer/1 ,
float/1 ,
number/1 ,
atomic/1 ,
compound/1 ,
callable/1 ,
ground/1 ,
is_list/1 ,
list/1 ,
partial_list/1 ,
list_or_partial_list/1
8.2 Term unification
8.3 Term comparison
8.4 Term processing
8.5 Variable naming/numbering
8.6 Arithmetic
8.7 Dynamic clause management
8.8 Predicate information
8.9 All solutions
8.10 Streams
8.11 Constant term streams
8.12 Character input/output
8.12.1 get_char/2 ,
get_char/1 ,
get_code/1 ,
get_code/2
8.12.2 get_key/2 ,
get_key/1
get_key_no_echo/2 ,
get_key_no_echo/1
8.12.3 peek_char/2 ,
peek_char/1 ,
peek_code/1 ,
peek_code/2
8.12.4 unget_char/2 ,
unget_char/1 ,
unget_code/2 ,
unget_code/1
8.12.5 put_char/2 ,
put_char/1 ,
put_code/1 ,
put_code/2 ,
nl/1 ,
nl/0
8.13 Byte input/output
8.14 Term input/output
8.14.1 read_term/3 ,
read_term/2 ,
read/2 ,
read/1
8.14.2 read_atom/2 ,
read_atom/1 ,
read_integer/2 ,
read_integer/1 ,
read_number/2 ,
read_number/1
8.14.3 read_token/2 ,
read_token/1
8.14.4 syntax_error_info/4
8.14.5 last_read_start_line_column/2
8.14.6 write_term/3 ,
write_term/2 ,
write/2 ,
write/1 ,
writeq/2 ,
writeq/1 ,
write_canonical/2 ,
write_canonical/1 ,
display/2 ,
display/1 ,
print/2 ,
print/1
8.14.7 format/3 ,
format/2
8.14.8 portray_clause/2 ,
portray_clause/1
8.14.9 get_print_stream/1
8.14.10 op/3
8.14.11 current_op/3
8.14.12 char_conversion/2
8.14.13 current_char_conversion/2
8.15 Input/output from/to constant terms
8.15.1 read_term_from_atom/3 ,
read_from_atom/2 ,
read_token_from_atom/2
8.15.2 read_term_from_chars/3 ,
read_from_chars/2 ,
read_token_from_chars/2
8.15.3 read_term_from_codes/3 ,
read_from_codes/2 ,
read_token_from_codes/2
8.15.4 write_term_to_atom/3 ,
write_to_atom/2 ,
writeq_to_atom/2 ,
write_canonical_to_atom/2 ,
display_to_atom/2 ,
print_to_atom/2 ,
format_to_atom/3
8.15.5 write_term_to_chars/3 ,
write_to_chars/2 ,
writeq_to_chars/2 ,
write_canonical_to_chars/2 ,
display_to_chars/2 ,
print_to_chars/2 ,
format_to_chars/3
8.15.6 write_term_to_codes/3 ,
write_to_codes/2 ,
writeq_to_codes/2 ,
write_canonical_to_codes/2 ,
display_to_codes/2 ,
print_to_codes/2 ,
format_to_codes/3
8.16 DEC-10 compatibility input/output
8.17 Term expansion
8.18 Logic, control and exceptions
8.18.1 abort/0 ,
stop/0 ,
top_level/0 ,
break/0 ,
halt/1 ,
halt/0
8.18.2 false/0 , once/1 , (\+)/1 - not provable,
call/2-11 ,
call_with_args/1-11 , call_det/2 , forall/2
8.18.3 repeat/0
8.18.4 between/3 , for/3
8.19 Atomic term processing
8.20 List processing
8.21 Global variables
8.21.1 Introduction
8.21.2 g_assign/2 ,
g_assignb/2 ,
g_link/2
8.21.3 g_read/2
8.21.4 g_array_size/2
8.21.5 g_inc/3 ,
g_inc/2 ,
g_inco/2 ,
g_inc/1 ,
g_dec/3 ,
g_dec/2 ,
g_deco/2 ,
g_dec/1
8.21.6 g_set_bit/2 ,
g_reset_bit/2 ,
g_test_set_bit/2 ,
g_test_reset_bit/2
8.21.7 Examples
8.22 Prolog state
8.23 Program state
8.24 System statistics
8.25 Random number generator
8.26 File name processing
8.27 Operating system interface
8.28 Sockets input/output
8.29 Linedit management
9 Finite domain solver and built-in predicates
9.1 Introduction
9.2 FD variable parameters
9.3 Initial value constraints
9.4 Type testing
9.5 FD variable information
9.6 Arithmetic constraints
9.6.1 FD arithmetic expressions
9.6.2 Partial AC: (#=)/2 - constraint equal,
(#\=)/2 - constraint not equal,
(#<)/2 - constraint less than,
(#=<)/2 - constraint less than or equal,
(#>)/2 - constraint greater than,
(#>=)/2 - constraint greater than or equal
9.6.3 Full AC: (#=#)/2 - constraint equal,
(#\=#)/2 - constraint not equal,
(#<#)/2 - constraint less than,
(#=<#)/2 - constraint less than or equal,
(#>#)/2 - constraint greater than,
(#>=#)/2 - constraint greater than or equal
9.6.4 fd_prime/1 ,
fd_not_prime/1
9.7 Boolean and reified constraints
9.7.1 Boolean FD expressions
9.7.2 fd_reified_in/4
9.7.3 (#\)/1 - constraint NOT,
(#<=>)/2 - constraint equivalent,
(#\<=>)/2 - constraint different,
(##)/2 - constraint XOR,
(#==>)/2 - constraint imply,
(#\==>)/2 - constraint not imply,
(#/\)/2 - constraint AND,
(#\/\)/2 - constraint NAND,
(#\/)/2 - constraint OR,
(#\\/)/2 - constraint NOR
9.7.4 fd_cardinality/2 ,
fd_cardinality/3 ,
fd_at_least_one/1 ,
fd_at_most_one/1 ,
fd_only_one/1
9.8 Symbolic constraints
9.9 Labeling constraints
9.10 Optimization constraints
10 Interfacing Prolog and C
References
Index
Copyright (C) 1999-2023 Daniel Diaz
Verbatim copying and distribution of this entire article is permitted in any
medium, provided this notice is preserved. More about the copyright