<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <META name="GENERATOR" content="hevea 1.06-7 of 2001-11-14"> <TITLE> Table of Contents </TITLE> </HEAD> <BODY TEXT=black BGCOLOR=white> <A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A> <A HREF="manual002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A> <HR> <TABLE CELLPADDING=0 CELLSPACING=0 WIDTH="100%"> <TR><TD BGCOLOR="#2dbae5"><DIV ALIGN=center><TABLE> <TR><TD><FONT SIZE=5><B>Table of Contents</B></FONT></TD> </TR></TABLE></DIV></TD> </TR></TABLE> <UL><LI> <A HREF="manual002.html#htoc1">1 Acknowledgements</A> <LI><A HREF="manual003.html#htoc2">2 Introduction</A> <LI><A HREF="manual004.html#htoc3">3 Using GNU Prolog</A> <UL><LI> <A HREF="manual005.html#htoc4">3.1 Introduction</A> <LI><A HREF="manual006.html#htoc5">3.2 The GNU Prolog interactive interpreter</A> <UL><LI> <A HREF="manual006.html#htoc6">3.2.1 Starting/exiting the interactive interpreter</A> <LI><A HREF="manual006.html#htoc7">3.2.2 The interactive interpreter read-execute-write loop</A> <LI><A HREF="manual006.html#htoc8">3.2.3 Consulting a Prolog program</A> <LI><A HREF="manual006.html#htoc9">3.2.4 Interrupting a query</A> <LI><A HREF="manual006.html#htoc10">3.2.5 The line editor</A> </UL> <LI><A HREF="manual007.html#htoc11">3.3 Adjusting the size of Prolog stacks</A> <LI><A HREF="manual008.html#htoc12">3.4 The GNU Prolog compiler</A> <UL><LI> <A HREF="manual008.html#htoc13">3.4.1 Different kinds of codes</A> <LI><A HREF="manual008.html#htoc14">3.4.2 Compilation scheme</A> <LI><A HREF="manual008.html#htoc15">3.4.3 Using the compiler</A> <LI><A HREF="manual008.html#htoc16">3.4.4 Running an executable</A> <LI><A HREF="manual008.html#htoc17">3.4.5 Generating a new interactive interpreter</A> <LI><A HREF="manual008.html#htoc18">3.4.6 The hexadecimal predicate name encoding</A> </UL> </UL> <LI><A HREF="manual009.html#htoc19">4 Debugging</A> <UL><LI> <A HREF="manual010.html#htoc20">4.1 Introduction</A> <LI><A HREF="manual011.html#htoc21">4.2 The procedure box model</A> <LI><A HREF="manual012.html#htoc22">4.3 Debugging predicates</A> <UL><LI> <A HREF="manual012.html#htoc23">4.3.1 Running and stopping the debugger</A> <LI><A HREF="manual012.html#htoc24">4.3.2 Leashing ports</A> <LI><A HREF="manual012.html#htoc25">4.3.3 Spy-points</A> </UL> <LI><A HREF="manual013.html#htoc26">4.4 Debugging messages</A> <LI><A HREF="manual014.html#htoc27">4.5 Debugger commands</A> <LI><A HREF="manual015.html#htoc28">4.6 The WAM debugger</A> </UL> <LI><A HREF="manual016.html#htoc29">5 Format of definitions</A> <UL><LI> <A HREF="manual017.html#htoc30">5.1 General format</A> <LI><A HREF="manual018.html#htoc31">5.2 Types and modes</A> <LI><A HREF="manual019.html#htoc32">5.3 Errors</A> <UL><LI> <A HREF="manual019.html#htoc33">5.3.1 General format and error context</A> <LI><A HREF="manual019.html#htoc34">5.3.2 Instantiation error</A> <LI><A HREF="manual019.html#htoc35">5.3.3 Type error</A> <LI><A HREF="manual019.html#htoc36">5.3.4 Domain error</A> <LI><A HREF="manual019.html#htoc37">5.3.5 Existence error</A> <LI><A HREF="manual019.html#htoc38">5.3.6 Permission error</A> <LI><A HREF="manual019.html#htoc39">5.3.7 Representation error</A> <LI><A HREF="manual019.html#htoc40">5.3.8 Evaluation error</A> <LI><A HREF="manual019.html#htoc41">5.3.9 Resource error</A> <LI><A HREF="manual019.html#htoc42">5.3.10 Syntax error</A> <LI><A HREF="manual019.html#htoc43">5.3.11 System error</A> </UL> </UL> <LI><A HREF="manual020.html#htoc44">6 Prolog directives and control constructs</A> <UL><LI> <A HREF="manual021.html#htoc45">6.1 Prolog directives</A> <UL><LI> <A HREF="manual021.html#htoc46">6.1.1 Introduction</A> <LI><A HREF="manual021.html#htoc47">6.1.2 <TT>dynamic/1</TT></A> <LI><A HREF="manual021.html#htoc48">6.1.3 <TT>public/1</TT></A> <LI><A HREF="manual021.html#htoc49">6.1.4 <TT>multifile/1</TT></A> <LI><A HREF="manual021.html#htoc50">6.1.5 <TT>discontiguous/1</TT></A> <LI><A HREF="manual021.html#htoc51">6.1.6 <TT>ensure_linked/1</TT></A> <LI><A HREF="manual021.html#htoc52">6.1.7 <TT>built_in/0</TT>, <TT>built_in/1</TT>, <TT>built_in_fd/0</TT>, <TT>built_in_fd/1</TT></A> <LI><A HREF="manual021.html#htoc53">6.1.8 <TT>include/1</TT></A> <LI><A HREF="manual021.html#htoc54">6.1.9 <TT>ensure_loaded/1</TT></A> <LI><A HREF="manual021.html#htoc55">6.1.10 <TT>op/3</TT></A> <LI><A HREF="manual021.html#htoc56">6.1.11 <TT>char_conversion/2</TT></A> <LI><A HREF="manual021.html#htoc57">6.1.12 <TT>set_prolog_flag/2</TT></A> <LI><A HREF="manual021.html#htoc58">6.1.13 <TT>initialization/1</TT></A> <LI><A HREF="manual021.html#htoc59">6.1.14 <TT>foreign/2</TT>, <TT>foreign/1</TT></A> </UL> <LI><A HREF="manual022.html#htoc60">6.2 Prolog control constructs</A> <UL><LI> <A HREF="manual022.html#htoc61">6.2.1 <TT>true/0</TT>, <TT>fail/0</TT>, <TT>!/0</TT></A> <LI><A HREF="manual022.html#htoc62">6.2.2 <TT>(',')/2</TT> - conjunction, <TT>(;)/2</TT> - disjunction, <TT>(->)/2</TT> - if-then</A> <LI><A HREF="manual022.html#htoc63">6.2.3 <TT>call/1</TT></A> <LI><A HREF="manual022.html#htoc64">6.2.4 <TT>catch/3</TT>, <TT>throw/1</TT></A> </UL> </UL> <LI><A HREF="manual023.html#htoc65">7 Prolog built-in predicates</A> <UL><LI> <A HREF="manual024.html#htoc66">7.1 Type testing</A> <UL><LI> <A HREF="manual024.html#htoc67">7.1.1 <TT>var/1</TT>, <TT>nonvar/1</TT>, <TT>atom/1</TT>, <TT>integer/1</TT>, <TT>float/1</TT>, <TT>number/1</TT>, <TT>atomic/1</TT>,<BR> <TT>compound/1</TT>, <TT>callable/1</TT>, <TT>list/1</TT>, <TT>partial_list/1</TT>, <TT>list_or_partial_list/1</TT></A> </UL> <LI><A HREF="manual025.html#htoc68">7.2 Term unification</A> <UL><LI> <A HREF="manual025.html#htoc69">7.2.1 <TT>(=)/2</TT> - Prolog unification</A> <LI><A HREF="manual025.html#htoc70">7.2.2 <TT>unify_with_occurs_check/2</TT></A> <LI><A HREF="manual025.html#htoc71">7.2.3 <TT>(\=)/2</TT> - not Prolog unifiable</A> </UL> <LI><A HREF="manual026.html#htoc72">7.3 Term comparison</A> <UL><LI> <A HREF="manual026.html#htoc73">7.3.1 Standard total ordering of terms</A> <LI><A HREF="manual026.html#htoc74">7.3.2 <TT>(==)/2</TT> - term identical, <TT>(\==)/2</TT> - term not identical,<BR> <TT>(@<)/2</TT> - term less than, <TT>(@=<)/2</TT> - term less than or equal to,<BR> <TT>(@>)/2</TT> - term greater than, <TT>(@>=)/2</TT> - term greater than or equal to</A> <LI><A HREF="manual026.html#htoc75">7.3.3 <TT>compare/3</TT></A> </UL> <LI><A HREF="manual027.html#htoc76">7.4 Term processing</A> <UL><LI> <A HREF="manual027.html#htoc77">7.4.1 <TT>functor/3</TT></A> <LI><A HREF="manual027.html#htoc78">7.4.2 <TT>arg/3</TT></A> <LI><A HREF="manual027.html#htoc79">7.4.3 <TT>(=..)/2</TT> - univ</A> <LI><A HREF="manual027.html#htoc80">7.4.4 <TT>copy_term/2</TT></A> <LI><A HREF="manual027.html#htoc81">7.4.5 <TT>setarg/4</TT>, <TT>setarg/3</TT></A> </UL> <LI><A HREF="manual028.html#htoc82">7.5 Variable naming/numbering</A> <UL><LI> <A HREF="manual028.html#htoc83">7.5.1 <TT>name_singleton_vars/1</TT></A> <LI><A HREF="manual028.html#htoc84">7.5.2 <TT>name_query_vars/2</TT></A> <LI><A HREF="manual028.html#htoc85">7.5.3 <TT>bind_variables/2</TT>, <TT>numbervars/3</TT>, <TT>numbervars/1</TT></A> <LI><A HREF="manual028.html#htoc86">7.5.4 <TT>term_ref/2</TT></A> </UL> <LI><A HREF="manual029.html#htoc87">7.6 Arithmetic</A> <UL><LI> <A HREF="manual029.html#htoc88">7.6.1 Evaluation of an arithmetic expression</A> <LI><A HREF="manual029.html#htoc89">7.6.2 <TT>(is)/2</TT> - evaluate expression</A> <LI><A HREF="manual029.html#htoc90">7.6.3 <TT>(=:=)/2</TT> - arithmetic equal, <TT>(=\=)/2</TT> - arithmetic not equal,<BR> <TT>(<)/2</TT> - arithmetic less than, <TT>(=<)/2</TT> - arithmetic less than or equal to,<BR> <TT>(>)/2</TT> - arithmetic greater than, <TT>(>=)/2</TT> - arithmetic greater than or equal to</A> </UL> <LI><A HREF="manual030.html#htoc91">7.7 Dynamic clause management</A> <UL><LI> <A HREF="manual030.html#htoc92">7.7.1 Introduction</A> <LI><A HREF="manual030.html#htoc93">7.7.2 <TT>asserta/1</TT>, <TT>assertz/1</TT></A> <LI><A HREF="manual030.html#htoc94">7.7.3 <TT>retract/1</TT></A> <LI><A HREF="manual030.html#htoc95">7.7.4 <TT>retractall/1</TT></A> <LI><A HREF="manual030.html#htoc96">7.7.5 <TT>clause/2</TT></A> <LI><A HREF="manual030.html#htoc97">7.7.6 <TT>abolish/1</TT></A> </UL> <LI><A HREF="manual031.html#htoc98">7.8 Predicate information</A> <UL><LI> <A HREF="manual031.html#htoc99">7.8.1 <TT>current_predicate/1</TT></A> <LI><A HREF="manual031.html#htoc100">7.8.2 <TT>predicate_property/2</TT></A> </UL> <LI><A HREF="manual032.html#htoc101">7.9 All solutions</A> <UL><LI> <A HREF="manual032.html#htoc102">7.9.1 Introduction</A> <LI><A HREF="manual032.html#htoc103">7.9.2 <TT>findall/3</TT></A> <LI><A HREF="manual032.html#htoc104">7.9.3 <TT>bagof/3</TT>, <TT>setof/3</TT></A> </UL> <LI><A HREF="manual033.html#htoc105">7.10 Streams</A> <UL><LI> <A HREF="manual033.html#htoc106">7.10.1 Introduction</A> <LI><A HREF="manual033.html#htoc107">7.10.2 <TT>current_input/1</TT></A> <LI><A HREF="manual033.html#htoc108">7.10.3 <TT>current_output/1</TT></A> <LI><A HREF="manual033.html#htoc109">7.10.4 <TT>set_input/1</TT></A> <LI><A HREF="manual033.html#htoc110">7.10.5 <TT>set_output/1</TT></A> <LI><A HREF="manual033.html#htoc111">7.10.6 <TT>open/4</TT>, <TT>open/3</TT></A> <LI><A HREF="manual033.html#htoc112">7.10.7 <TT>close/2</TT>, <TT>close/1</TT></A> <LI><A HREF="manual033.html#htoc113">7.10.8 <TT>flush_output/1</TT>, <TT>flush_output/0</TT></A> <LI><A HREF="manual033.html#htoc114">7.10.9 <TT>current_stream/1</TT></A> <LI><A HREF="manual033.html#htoc115">7.10.10 <TT>stream_property/2</TT></A> <LI><A HREF="manual033.html#htoc116">7.10.11 <TT>at_end_of_stream/1</TT>, <TT>at_end_of_stream/0</TT></A> <LI><A HREF="manual033.html#htoc117">7.10.12 <TT>stream_position/2</TT></A> <LI><A HREF="manual033.html#htoc118">7.10.13 <TT>set_stream_position/2</TT></A> <LI><A HREF="manual033.html#htoc119">7.10.14 <TT>seek/4</TT></A> <LI><A HREF="manual033.html#htoc120">7.10.15 <TT>character_count/2</TT></A> <LI><A HREF="manual033.html#htoc121">7.10.16 <TT>line_count/2</TT></A> <LI><A HREF="manual033.html#htoc122">7.10.17 <TT>line_position/2</TT></A> <LI><A HREF="manual033.html#htoc123">7.10.18 <TT>stream_line_column/3</TT></A> <LI><A HREF="manual033.html#htoc124">7.10.19 <TT>set_stream_line_column/3</TT></A> <LI><A HREF="manual033.html#htoc125">7.10.20 <TT>add_stream_alias/2</TT></A> <LI><A HREF="manual033.html#htoc126">7.10.21 <TT>current_alias/2</TT></A> <LI><A HREF="manual033.html#htoc127">7.10.22 <TT>add_stream_mirror/2</TT></A> <LI><A HREF="manual033.html#htoc128">7.10.23 <TT>remove_stream_mirror/2</TT></A> <LI><A HREF="manual033.html#htoc129">7.10.24 <TT>current_mirror/2</TT></A> <LI><A HREF="manual033.html#htoc130">7.10.25 <TT>set_stream_type/2</TT></A> <LI><A HREF="manual033.html#htoc131">7.10.26 <TT>set_stream_eof_action/2</TT></A> <LI><A HREF="manual033.html#htoc132">7.10.27 <TT>set_stream_buffering/2</TT></A> </UL> <LI><A HREF="manual034.html#htoc133">7.11 Constant term streams</A> <UL><LI> <A HREF="manual034.html#htoc134">7.11.1 Introduction</A> <LI><A HREF="manual034.html#htoc135">7.11.2 <TT>open_input_atom_stream/2</TT>, <TT>open_input_chars_stream/2</TT>,<BR> <TT>open_input_codes_stream/2</TT></A> <LI><A HREF="manual034.html#htoc136">7.11.3 <TT>close_input_atom_stream/1</TT>, <TT>close_input_chars_stream/1</TT>,<BR> <TT>close_input_codes_stream/1</TT></A> <LI><A HREF="manual034.html#htoc137">7.11.4 <TT>open_output_atom_stream/1</TT>, <TT>open_output_chars_stream/1</TT>,<BR> <TT>open_output_codes_stream/1</TT></A> <LI><A HREF="manual034.html#htoc138">7.11.5 <TT>close_output_atom_stream/2</TT>, <TT>close_output_chars_stream/2</TT>,<BR> <TT>close_output_codes_stream/2</TT></A> </UL> <LI><A HREF="manual035.html#htoc139">7.12 Character input/output</A> <UL><LI> <A HREF="manual035.html#htoc140">7.12.1 <TT>get_char/2</TT>, <TT>get_char/1</TT>, <TT>get_code/1</TT>, <TT>get_code/2</TT></A> <LI><A HREF="manual035.html#htoc141">7.12.2 <TT>get_key/2</TT>, <TT>get_key/1</TT> <TT>get_key_no_echo/2</TT>, <TT>get_key_no_echo/1</TT></A> <LI><A HREF="manual035.html#htoc142">7.12.3 <TT>peek_char/2</TT>, <TT>peek_char/1</TT>, <TT>peek_code/1</TT>, <TT>peek_code/2</TT></A> <LI><A HREF="manual035.html#htoc143">7.12.4 <TT>unget_char/2</TT>, <TT>unget_char/1</TT>, <TT>unget_code/2</TT>, <TT>unget_code/1</TT></A> <LI><A HREF="manual035.html#htoc144">7.12.5 <TT>put_char/2</TT>, <TT>put_char/1</TT>, <TT>put_code/1</TT>, <TT>put_code/2</TT>, <TT>nl/1</TT>, <TT>nl/0</TT></A> </UL> <LI><A HREF="manual036.html#htoc145">7.13 Byte input/output</A> <UL><LI> <A HREF="manual036.html#htoc146">7.13.1 <TT>get_byte/2</TT>, <TT>get_byte/1</TT></A> <LI><A HREF="manual036.html#htoc147">7.13.2 <TT>peek_byte/2</TT>, <TT>peek_byte/1</TT></A> <LI><A HREF="manual036.html#htoc148">7.13.3 <TT>unget_byte/2</TT>, <TT>unget_byte/1</TT></A> <LI><A HREF="manual036.html#htoc149">7.13.4 <TT>put_byte/2</TT>, <TT>put_byte/1</TT></A> </UL> <LI><A HREF="manual037.html#htoc150">7.14 Term input/output</A> <UL><LI> <A HREF="manual037.html#htoc151">7.14.1 <TT>read_term/3</TT>, <TT>read_term/2</TT>, <TT>read/2</TT>, <TT>read/1</TT></A> <LI><A HREF="manual037.html#htoc152">7.14.2 <TT>read_atom/2</TT>, <TT>read_atom/1</TT>, <TT>read_integer/2</TT>, <TT>read_integer/1</TT>,<BR> <TT>read_number/2</TT>, <TT>read_number/1</TT></A> <LI><A HREF="manual037.html#htoc153">7.14.3 <TT>read_token/2</TT>, <TT>read_token/1</TT></A> <LI><A HREF="manual037.html#htoc154">7.14.4 <TT>syntax_error_info/4</TT></A> <LI><A HREF="manual037.html#htoc155">7.14.5 <TT>last_read_start_line_column/2</TT></A> <LI><A HREF="manual037.html#htoc156">7.14.6 <TT>write_term/3</TT>, <TT>write_term/2</TT>, <TT>write/2</TT>, <TT>write/1</TT>, <TT>writeq/2</TT>, <TT>writeq/1</TT>,<BR> <TT>write_canonical/2</TT>, <TT>write_canonical/1</TT>, <TT>display/2</TT>, <TT>display/1</TT>, <TT>print/2</TT>,<BR> <TT>print/1</TT></A> <LI><A HREF="manual037.html#htoc157">7.14.7 <TT>format/3</TT>, <TT>format/2</TT></A> <LI><A HREF="manual037.html#htoc158">7.14.8 <TT>portray_clause/2</TT>, <TT>portray_clause/1</TT></A> <LI><A HREF="manual037.html#htoc159">7.14.9 <TT>get_print_stream/1</TT></A> <LI><A HREF="manual037.html#htoc160">7.14.10 <TT>op/3</TT></A> <LI><A HREF="manual037.html#htoc161">7.14.11 <TT>current_op/3</TT></A> <LI><A HREF="manual037.html#htoc162">7.14.12 <TT>char_conversion/2</TT></A> <LI><A HREF="manual037.html#htoc163">7.14.13 <TT>current_char_conversion/2</TT></A> </UL> <LI><A HREF="manual038.html#htoc164">7.15 Input/output from/to constant terms</A> <UL><LI> <A HREF="manual038.html#htoc165">7.15.1 <TT>read_term_from_atom/3</TT>, <TT>read_from_atom/2</TT>, <TT>read_token_from_atom/2</TT></A> <LI><A HREF="manual038.html#htoc166">7.15.2 <TT>read_term_from_chars/3</TT>, <TT>read_from_chars/2</TT>, <TT>read_token_from_chars/2</TT></A> <LI><A HREF="manual038.html#htoc167">7.15.3 <TT>read_term_from_codes/3</TT>, <TT>read_from_codes/2</TT>, <TT>read_token_from_codes/2</TT></A> <LI><A HREF="manual038.html#htoc168">7.15.4 <TT>write_term_to_atom/3</TT>, <TT>write_to_atom/2</TT>, <TT>writeq_to_atom/2</TT>,<BR> <TT>write_canonical_to_atom/2</TT>, <TT>display_to_atom/2</TT>, <TT>print_to_atom/2</TT>,<BR> <TT>format_to_atom/3</TT></A> <LI><A HREF="manual038.html#htoc169">7.15.5 <TT>write_term_to_chars/3</TT>, <TT>write_to_chars/2</TT>, <TT>writeq_to_chars/2</TT>,<BR> <TT>write_canonical_to_chars/2</TT>, <TT>display_to_chars/2</TT>, <TT>print_to_chars/2</TT>,<BR> <TT>format_to_chars/3</TT></A> <LI><A HREF="manual038.html#htoc170">7.15.6 <TT>write_term_to_codes/3</TT>, <TT>write_to_codes/2</TT>, <TT>writeq_to_codes/2</TT>,<BR> <TT>write_canonical_to_codes/2</TT>, <TT>display_to_codes/2</TT>, <TT>print_to_codes/2</TT>,<BR> <TT>format_to_codes/3</TT></A> </UL> <LI><A HREF="manual039.html#htoc171">7.16 DEC-10 compatibility input/output</A> <UL><LI> <A HREF="manual039.html#htoc172">7.16.1 Introduction</A> <LI><A HREF="manual039.html#htoc173">7.16.2 <TT>see/1</TT>, <TT>tell/1</TT>, <TT>append/1</TT></A> <LI><A HREF="manual039.html#htoc174">7.16.3 <TT>seeing/1</TT>, <TT>telling/1</TT></A> <LI><A HREF="manual039.html#htoc175">7.16.4 <TT>seen/0</TT>, <TT>told/0</TT></A> <LI><A HREF="manual039.html#htoc176">7.16.5 <TT>get0/1</TT>, <TT>get/1</TT>, <TT>skip/1</TT></A> <LI><A HREF="manual039.html#htoc177">7.16.6 <TT>put/1</TT>, <TT>tab/1</TT></A> </UL> <LI><A HREF="manual040.html#htoc178">7.17 Term expansion</A> <UL><LI> <A HREF="manual040.html#htoc179">7.17.1 Definite clause grammars</A> <LI><A HREF="manual040.html#htoc180">7.17.2 <TT>expand_term/2</TT>, <TT>term_expansion/2</TT></A> <LI><A HREF="manual040.html#htoc181">7.17.3 <TT>phrase/3</TT>, <TT>phrase/2</TT></A> </UL> <LI><A HREF="manual041.html#htoc182">7.18 Logic, control and exceptions</A> <UL><LI> <A HREF="manual041.html#htoc183">7.18.1 <TT>abort/0</TT>, <TT>stop/0</TT>, <TT>top_level/0</TT>, <TT>break/0</TT>, <TT>halt/1</TT>, <TT>halt/0</TT></A> <LI><A HREF="manual041.html#htoc184">7.18.2 <TT>once/1</TT>, <TT>(\+)/1</TT> - not provable, <TT>call_with_args/1-11</TT>, <TT>call/2</TT></A> <LI><A HREF="manual041.html#htoc185">7.18.3 <TT>repeat/0</TT></A> <LI><A HREF="manual041.html#htoc186">7.18.4 <TT>for/3</TT></A> </UL> <LI><A HREF="manual042.html#htoc187">7.19 Atomic term processing</A> <UL><LI> <A HREF="manual042.html#htoc188">7.19.1 <TT>atom_length/2</TT></A> <LI><A HREF="manual042.html#htoc189">7.19.2 <TT>atom_concat/3</TT></A> <LI><A HREF="manual042.html#htoc190">7.19.3 <TT>sub_atom/5</TT></A> <LI><A HREF="manual042.html#htoc191">7.19.4 <TT>char_code/2</TT></A> <LI><A HREF="manual042.html#htoc192">7.19.5 <TT>lower_upper/2</TT></A> <LI><A HREF="manual042.html#htoc193">7.19.6 <TT>atom_chars/2</TT>, <TT>atom_codes/2</TT></A> <LI><A HREF="manual042.html#htoc194">7.19.7 <TT>number_atom/2</TT>, <TT>number_chars/2</TT>, <TT>number_codes/2</TT></A> <LI><A HREF="manual042.html#htoc195">7.19.8 <TT>name/2</TT></A> <LI><A HREF="manual042.html#htoc196">7.19.9 <TT>atom_hash/2</TT></A> <LI><A HREF="manual042.html#htoc197">7.19.10 <TT>new_atom/3</TT>, <TT>new_atom/2</TT>, <TT>new_atom/1</TT></A> <LI><A HREF="manual042.html#htoc198">7.19.11 <TT>current_atom/1</TT></A> <LI><A HREF="manual042.html#htoc199">7.19.12 <TT>atom_property/2</TT></A> </UL> <LI><A HREF="manual043.html#htoc200">7.20 List processing</A> <UL><LI> <A HREF="manual043.html#htoc201">7.20.1 <TT>append/3</TT></A> <LI><A HREF="manual043.html#htoc202">7.20.2 <TT>member/2</TT>, <TT>memberchk/2</TT></A> <LI><A HREF="manual043.html#htoc203">7.20.3 <TT>reverse/2</TT></A> <LI><A HREF="manual043.html#htoc204">7.20.4 <TT>delete/3</TT>, <TT>select/3</TT></A> <LI><A HREF="manual043.html#htoc205">7.20.5 <TT>permutation/2</TT></A> <LI><A HREF="manual043.html#htoc206">7.20.6 <TT>prefix/2</TT>, <TT>suffix/2</TT></A> <LI><A HREF="manual043.html#htoc207">7.20.7 <TT>sublist/2</TT></A> <LI><A HREF="manual043.html#htoc208">7.20.8 <TT>last/2</TT></A> <LI><A HREF="manual043.html#htoc209">7.20.9 <TT>length/2</TT></A> <LI><A HREF="manual043.html#htoc210">7.20.10 <TT>nth/3</TT></A> <LI><A HREF="manual043.html#htoc211">7.20.11 <TT>max_list/2</TT>, <TT>min_list/2</TT>, <TT>sum_list/2</TT></A> <LI><A HREF="manual043.html#htoc212">7.20.12 <TT>sort/2</TT>, <TT>sort0/2</TT>, <TT>keysort/2</TT> <TT>sort/1</TT>, <TT>sort0/1</TT>, <TT>keysort/1</TT></A> </UL> <LI><A HREF="manual044.html#htoc213">7.21 Global variables</A> <UL><LI> <A HREF="manual044.html#htoc214">7.21.1 Introduction</A> <LI><A HREF="manual044.html#htoc215">7.21.2 <TT>g_assign/2</TT>, <TT>g_assignb/2</TT>, <TT>g_link/2</TT></A> <LI><A HREF="manual044.html#htoc216">7.21.3 <TT>g_read/2</TT></A> <LI><A HREF="manual044.html#htoc217">7.21.4 <TT>g_array_size/2</TT></A> <LI><A HREF="manual044.html#htoc218">7.21.5 <TT>g_inc/3</TT>, <TT>g_inc/2</TT>, <TT>g_inco/2</TT>, <TT>g_inc/1</TT>, <TT>g_dec/3</TT>, <TT>g_dec/2</TT>, <TT>g_deco/2</TT>, <TT>g_dec/1</TT></A> <LI><A HREF="manual044.html#htoc219">7.21.6 <TT>g_set_bit/2</TT>, <TT>g_reset_bit/2</TT>, <TT>g_test_set_bit/2</TT>, <TT>g_test_reset_bit/2</TT></A> <LI><A HREF="manual044.html#htoc220">7.21.7 Examples</A> </UL> <LI><A HREF="manual045.html#htoc221">7.22 Prolog state</A> <UL><LI> <A HREF="manual045.html#htoc222">7.22.1 <TT>set_prolog_flag/2</TT></A> <LI><A HREF="manual045.html#htoc223">7.22.2 <TT>current_prolog_flag/2</TT></A> <LI><A HREF="manual045.html#htoc224">7.22.3 <TT>set_bip_name/2</TT></A> <LI><A HREF="manual045.html#htoc225">7.22.4 <TT>current_bip_name/2</TT></A> <LI><A HREF="manual045.html#htoc226">7.22.5 <TT>write_pl_state_file/1</TT>, <TT>read_pl_state_file/1</TT></A> </UL> <LI><A HREF="manual046.html#htoc227">7.23 Program state</A> <UL><LI> <A HREF="manual046.html#htoc228">7.23.1 <TT>consult/1</TT>, <TT>'.'/2</TT> - program consult</A> <LI><A HREF="manual046.html#htoc229">7.23.2 <TT>load/1</TT></A> <LI><A HREF="manual046.html#htoc230">7.23.3 <TT>listing/1</TT>, <TT>listing/0</TT></A> </UL> <LI><A HREF="manual047.html#htoc231">7.24 System statistics</A> <UL><LI> <A HREF="manual047.html#htoc232">7.24.1 <TT>statistics/0</TT>, <TT>statistics/2</TT></A> <LI><A HREF="manual047.html#htoc233">7.24.2 <TT>user_time/1</TT>, <TT>system_time/1</TT>, <TT>cpu_time/1</TT>, <TT>real_time/1</TT></A> </UL> <LI><A HREF="manual048.html#htoc234">7.25 Random number generator</A> <UL><LI> <A HREF="manual048.html#htoc235">7.25.1 <TT>set_seed/1</TT>, <TT>randomize/0</TT></A> <LI><A HREF="manual048.html#htoc236">7.25.2 <TT>get_seed/1</TT></A> <LI><A HREF="manual048.html#htoc237">7.25.3 <TT>random/1</TT></A> <LI><A HREF="manual048.html#htoc238">7.25.4 <TT>random/3</TT></A> </UL> <LI><A HREF="manual049.html#htoc239">7.26 File name processing</A> <UL><LI> <A HREF="manual049.html#htoc240">7.26.1 <TT>absolute_file_name/2</TT></A> <LI><A HREF="manual049.html#htoc241">7.26.2 <TT>decompose_file_name/4</TT></A> <LI><A HREF="manual049.html#htoc242">7.26.3 <TT>prolog_file_name/2</TT></A> </UL> <LI><A HREF="manual050.html#htoc243">7.27 Operating system interface</A> <UL><LI> <A HREF="manual050.html#htoc244">7.27.1 <TT>argument_counter/1</TT></A> <LI><A HREF="manual050.html#htoc245">7.27.2 <TT>argument_value/2</TT></A> <LI><A HREF="manual050.html#htoc246">7.27.3 <TT>argument_list/1</TT></A> <LI><A HREF="manual050.html#htoc247">7.27.4 <TT>environ/2</TT></A> <LI><A HREF="manual050.html#htoc248">7.27.5 <TT>make_directory/1</TT>, <TT>delete_directory/1</TT>, <TT>change_directory/1</TT></A> <LI><A HREF="manual050.html#htoc249">7.27.6 <TT>working_directory/1</TT></A> <LI><A HREF="manual050.html#htoc250">7.27.7 <TT>directory_files/2</TT></A> <LI><A HREF="manual050.html#htoc251">7.27.8 <TT>rename_file/2</TT></A> <LI><A HREF="manual050.html#htoc252">7.27.9 <TT>delete_file/1</TT>, <TT>unlink/1</TT></A> <LI><A HREF="manual050.html#htoc253">7.27.10 <TT>file_permission/2</TT>, <TT>file_exists/1</TT></A> <LI><A HREF="manual050.html#htoc254">7.27.11 <TT>file_property/2</TT></A> <LI><A HREF="manual050.html#htoc255">7.27.12 <TT>temporary_name/2</TT></A> <LI><A HREF="manual050.html#htoc256">7.27.13 <TT>temporary_file/3</TT></A> <LI><A HREF="manual050.html#htoc257">7.27.14 <TT>date_time/1</TT></A> <LI><A HREF="manual050.html#htoc258">7.27.15 <TT>host_name/1</TT></A> <LI><A HREF="manual050.html#htoc259">7.27.16 <TT>os_version/1</TT></A> <LI><A HREF="manual050.html#htoc260">7.27.17 <TT>architecture/1</TT></A> <LI><A HREF="manual050.html#htoc261">7.27.18 <TT>shell/2</TT>, <TT>shell/1</TT>, <TT>shell/0</TT></A> <LI><A HREF="manual050.html#htoc262">7.27.19 <TT>system/2</TT>, <TT>system/1</TT></A> <LI><A HREF="manual050.html#htoc263">7.27.20 <TT>spawn/3</TT>, <TT>spawn/2</TT></A> <LI><A HREF="manual050.html#htoc264">7.27.21 <TT>popen/3</TT></A> <LI><A HREF="manual050.html#htoc265">7.27.22 <TT>exec/5</TT>, <TT>exec/4</TT></A> <LI><A HREF="manual050.html#htoc266">7.27.23 <TT>fork_prolog/1</TT></A> <LI><A HREF="manual050.html#htoc267">7.27.24 <TT>create_pipe/2</TT></A> <LI><A HREF="manual050.html#htoc268">7.27.25 <TT>wait/2</TT></A> <LI><A HREF="manual050.html#htoc269">7.27.26 <TT>prolog_pid/1</TT></A> <LI><A HREF="manual050.html#htoc270">7.27.27 <TT>send_signal/2</TT></A> <LI><A HREF="manual050.html#htoc271">7.27.28 <TT>sleep/1</TT></A> <LI><A HREF="manual050.html#htoc272">7.27.29 <TT>select/5</TT></A> </UL> <LI><A HREF="manual051.html#htoc273">7.28 Sockets input/output</A> <UL><LI> <A HREF="manual051.html#htoc274">7.28.1 Introduction</A> <LI><A HREF="manual051.html#htoc275">7.28.2 <TT>socket/2</TT></A> <LI><A HREF="manual051.html#htoc276">7.28.3 <TT>socket_close/1</TT></A> <LI><A HREF="manual051.html#htoc277">7.28.4 <TT>socket_bind/2</TT></A> <LI><A HREF="manual051.html#htoc278">7.28.5 <TT>socket_connect/4</TT></A> <LI><A HREF="manual051.html#htoc279">7.28.6 <TT>socket_listen/2</TT></A> <LI><A HREF="manual051.html#htoc280">7.28.7 <TT>socket_accept/4</TT>, <TT>socket_accept/3</TT></A> <LI><A HREF="manual051.html#htoc281">7.28.8 <TT>hostname_address/2</TT></A> </UL> <LI><A HREF="manual052.html#htoc282">7.29 Linedit management</A> <UL><LI> <A HREF="manual052.html#htoc283">7.29.1 <TT>get_linedit_prompt/1</TT></A> <LI><A HREF="manual052.html#htoc284">7.29.2 <TT>set_linedit_prompt/1</TT></A> <LI><A HREF="manual052.html#htoc285">7.29.3 <TT>add_linedit_completion/1</TT></A> <LI><A HREF="manual052.html#htoc286">7.29.4 <TT>find_linedit_completion/2</TT></A> </UL> <LI><A HREF="manual053.html#htoc287">7.30 Source reader facility</A> <UL><LI> <A HREF="manual053.html#htoc288">7.30.1 Introduction</A> <LI><A HREF="manual053.html#htoc289">7.30.2 <TT>sr_open/3</TT></A> <LI><A HREF="manual053.html#htoc290">7.30.3 <TT>sr_change_options/2</TT></A> <LI><A HREF="manual053.html#htoc291">7.30.4 <TT>sr_close/1</TT></A> <LI><A HREF="manual053.html#htoc292">7.30.5 <TT>sr_read_term/4</TT></A> <LI><A HREF="manual053.html#htoc293">7.30.6 <TT>sr_current_descriptor/1</TT></A> <LI><A HREF="manual053.html#htoc294">7.30.7 <TT>sr_get_stream/2</TT></A> <LI><A HREF="manual053.html#htoc295">7.30.8 <TT>sr_get_module/3</TT></A> <LI><A HREF="manual053.html#htoc296">7.30.9 <TT>sr_get_file_name/2</TT></A> <LI><A HREF="manual053.html#htoc297">7.30.10 <TT>sr_get_position/3</TT></A> <LI><A HREF="manual053.html#htoc298">7.30.11 <TT>sr_get_include_list/2</TT></A> <LI><A HREF="manual053.html#htoc299">7.30.12 <TT>sr_get_include_stream_list/2</TT></A> <LI><A HREF="manual053.html#htoc300">7.30.13 <TT>sr_get_size_counters/3</TT></A> <LI><A HREF="manual053.html#htoc301">7.30.14 <TT>sr_get_error_counters/3</TT></A> <LI><A HREF="manual053.html#htoc302">7.30.15 <TT>sr_set_error_counters/3</TT></A> <LI><A HREF="manual053.html#htoc303">7.30.16 <TT>sr_error_from_exception/2</TT></A> <LI><A HREF="manual053.html#htoc304">7.30.17 <TT>sr_write_message/8</TT>, <TT>sr_write_message/6</TT>, <TT>sr_write_message/4</TT></A> <LI><A HREF="manual053.html#htoc305">7.30.18 <TT>sr_write_error/6</TT>, <TT>sr_write_error/4</TT>, <TT>sr_write_error/2</TT></A> </UL> </UL> <LI><A HREF="manual054.html#htoc306">8 Finite domain solver and built-in predicates</A> <UL><LI> <A HREF="manual055.html#htoc307">8.1 Introduction</A> <UL><LI> <A HREF="manual055.html#htoc308">8.1.1 Finite Domain variables</A> </UL> <LI><A HREF="manual056.html#htoc309">8.2 FD variable parameters</A> <UL><LI> <A HREF="manual056.html#htoc310">8.2.1 <TT>fd_max_integer/1</TT></A> <LI><A HREF="manual056.html#htoc311">8.2.2 <TT>fd_vector_max/1</TT></A> <LI><A HREF="manual056.html#htoc312">8.2.3 <TT>fd_set_vector_max/1</TT></A> </UL> <LI><A HREF="manual057.html#htoc313">8.3 Initial value constraints</A> <UL><LI> <A HREF="manual057.html#htoc314">8.3.1 <TT>fd_domain/3</TT>, <TT>fd_domain_bool/1</TT></A> <LI><A HREF="manual057.html#htoc315">8.3.2 <TT>fd_domain/2</TT></A> </UL> <LI><A HREF="manual058.html#htoc316">8.4 Type testing</A> <UL><LI> <A HREF="manual058.html#htoc317">8.4.1 <TT>fd_var/1</TT>, <TT>non_fd_var/1</TT>, <TT>generic_var/1</TT>, <TT>non_generic_var/1</TT></A> </UL> <LI><A HREF="manual059.html#htoc318">8.5 FD variable information</A> <UL><LI> <A HREF="manual059.html#htoc319">8.5.1 <TT>fd_min/2</TT>, <TT>fd_max/2</TT>, <TT>fd_size/2</TT>, <TT>fd_dom/2</TT></A> <LI><A HREF="manual059.html#htoc320">8.5.2 <TT>fd_has_extra_cstr/1</TT>, <TT>fd_has_vector/1</TT>, <TT>fd_use_vector/1</TT></A> </UL> <LI><A HREF="manual060.html#htoc321">8.6 Arithmetic constraints</A> <UL><LI> <A HREF="manual060.html#htoc322">8.6.1 FD arithmetic expressions</A> <LI><A HREF="manual060.html#htoc323">8.6.2 Partial AC: <TT>(#=)/2</TT> - constraint equal, <TT>(#\=)/2</TT> - constraint not equal,<BR> <TT>(#<)/2</TT> - constraint less than, <TT>(#=<)/2</TT> - constraint less than or equal,<BR> <TT>(#>)/2</TT> - constraint greater than, <TT>(#>=)/2</TT> - constraint greater than or equal</A> <LI><A HREF="manual060.html#htoc324">8.6.3 Full AC: <TT>(#=#)/2</TT> - constraint equal, <TT>(#\=#)/2</TT> - constraint not equal,<BR> <TT>(#<#)/2</TT> - constraint less than, <TT>(#=<#)/2</TT> - constraint less than or equal,<BR> <TT>(#>#)/2</TT> - constraint greater than, <TT>(#>=#)/2</TT> - constraint greater than or equal</A> <LI><A HREF="manual060.html#htoc325">8.6.4 <TT>fd_prime/1</TT>, <TT>fd_not_prime/1</TT></A> </UL> <LI><A HREF="manual061.html#htoc326">8.7 Boolean and reified constraints</A> <UL><LI> <A HREF="manual061.html#htoc327">8.7.1 Boolean FD expressions</A> <LI><A HREF="manual061.html#htoc328">8.7.2 <TT>(#\)/1</TT> - constraint NOT, <TT>(#<=>)/2</TT> - constraint equivalent,<BR> <TT>(#\<=>)/2</TT> - constraint different, <TT>(##)/2</TT> - constraint XOR,<BR> <TT>(#==>)/2</TT> - constraint imply, <TT>(#\==>)/2</TT> - constraint not imply,<BR> <TT>(#/\)/2</TT> - constraint AND, <TT>(#\/\)/2</TT> - constraint NAND,<BR> <TT>(#\/)/2</TT> - constraint OR, <TT>(#\\/)/2</TT> - constraint NOR</A> <LI><A HREF="manual061.html#htoc329">8.7.3 <TT>fd_cardinality/2</TT>, <TT>fd_cardinality/3</TT>, <TT>fd_at_least_one/1</TT>, <TT>fd_at_most_one/1</TT>,<BR> <TT>fd_only_one/1</TT></A> </UL> <LI><A HREF="manual062.html#htoc330">8.8 Symbolic constraints</A> <UL><LI> <A HREF="manual062.html#htoc331">8.8.1 <TT>fd_all_different/1</TT></A> <LI><A HREF="manual062.html#htoc332">8.8.2 <TT>fd_element/3</TT></A> <LI><A HREF="manual062.html#htoc333">8.8.3 <TT>fd_element_var/3</TT></A> <LI><A HREF="manual062.html#htoc334">8.8.4 <TT>fd_atmost/3</TT>, <TT>fd_atleast/3</TT>, <TT>fd_exactly/3</TT></A> <LI><A HREF="manual062.html#htoc335">8.8.5 <TT>fd_relation/2</TT>, <TT>fd_relationc/2</TT></A> </UL> <LI><A HREF="manual063.html#htoc336">8.9 Labeling constraints</A> <UL><LI> <A HREF="manual063.html#htoc337">8.9.1 <TT>fd_labeling/2</TT>, <TT>fd_labeling/1</TT>, <TT>fd_labelingff/1</TT></A> </UL> <LI><A HREF="manual064.html#htoc338">8.10 Optimization constraints</A> <UL><LI> <A HREF="manual064.html#htoc339">8.10.1 <TT>fd_minimize/2</TT>, <TT>fd_maximize/2</TT></A> </UL> </UL> <LI><A HREF="manual065.html#htoc340">9 Interfacing Prolog and C</A> <UL><LI> <A HREF="manual066.html#htoc341">9.1 Calling C from Prolog</A> <UL><LI> <A HREF="manual066.html#htoc342">9.1.1 Introduction</A> <LI><A HREF="manual066.html#htoc343">9.1.2 <TT>foreign/2</TT> directive</A> <LI><A HREF="manual066.html#htoc344">9.1.3 The C function</A> <LI><A HREF="manual066.html#htoc345">9.1.4 Input arguments</A> <LI><A HREF="manual066.html#htoc346">9.1.5 Output arguments</A> <LI><A HREF="manual066.html#htoc347">9.1.6 Input/output arguments</A> <LI><A HREF="manual066.html#htoc348">9.1.7 Writing non-deterministic C code</A> <LI><A HREF="manual066.html#htoc349">9.1.8 Example: input and output arguments</A> <LI><A HREF="manual066.html#htoc350">9.1.9 Example: non-deterministic code</A> <LI><A HREF="manual066.html#htoc351">9.1.10 Example: input/output arguments</A> </UL> <LI><A HREF="manual067.html#htoc352">9.2 Manipulating Prolog terms</A> <UL><LI> <A HREF="manual067.html#htoc353">9.2.1 Introduction</A> <LI><A HREF="manual067.html#htoc354">9.2.2 Managing Prolog atoms</A> <LI><A HREF="manual067.html#htoc355">9.2.3 Reading Prolog terms</A> <LI><A HREF="manual067.html#htoc356">9.2.4 Unifying Prolog terms</A> <LI><A HREF="manual067.html#htoc357">9.2.5 Creating Prolog terms</A> <LI><A HREF="manual067.html#htoc358">9.2.6 Testing the type of Prolog terms</A> <LI><A HREF="manual067.html#htoc359">9.2.7 Comparing Prolog terms</A> <LI><A HREF="manual067.html#htoc360">9.2.8 Copying Prolog terms</A> <LI><A HREF="manual067.html#htoc361">9.2.9 Comparing and evaluating arithmetic expressions</A> </UL> <LI><A HREF="manual068.html#htoc362">9.3 Raising Prolog errors</A> <UL><LI> <A HREF="manual068.html#htoc363">9.3.1 Managing the error context</A> <LI><A HREF="manual068.html#htoc364">9.3.2 Instantiation error</A> <LI><A HREF="manual068.html#htoc365">9.3.3 Type error</A> <LI><A HREF="manual068.html#htoc366">9.3.4 Domain error</A> <LI><A HREF="manual068.html#htoc367">9.3.5 Existence error</A> <LI><A HREF="manual068.html#htoc368">9.3.6 Permission error</A> <LI><A HREF="manual068.html#htoc369">9.3.7 Representation error</A> <LI><A HREF="manual068.html#htoc370">9.3.8 Evaluation error</A> <LI><A HREF="manual068.html#htoc371">9.3.9 Resource error</A> <LI><A HREF="manual068.html#htoc372">9.3.10 Syntax error</A> <LI><A HREF="manual068.html#htoc373">9.3.11 System error</A> </UL> <LI><A HREF="manual069.html#htoc374">9.4 Calling Prolog from C</A> <UL><LI> <A HREF="manual069.html#htoc375">9.4.1 Introduction</A> <LI><A HREF="manual069.html#htoc376">9.4.2 Example: <TT>my_call/1</TT> - a <TT>call/1</TT> clone</A> <LI><A HREF="manual069.html#htoc377">9.4.3 Example: recovering the list of all operators</A> </UL> <LI><A HREF="manual070.html#htoc378">9.5 Defining a new C <TT>main()</TT> function</A> <UL><LI> <A HREF="manual070.html#htoc379">9.5.1 Example: asking for ancestors</A> </UL> </UL> <LI><A HREF="manual071.html#@biblio">References</A> <LI><A HREF="manual-idx.html#@index">Index</A> </UL> <HR SIZE=2> Copyright (C) 1999-2002 Daniel Diaz <BR> <BR> Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. <BR> <BR> <A HREF="index.html#copyright">More about the copyright</A> <HR> <A HREF="index.html"><IMG SRC ="contents_motif.gif" ALT="Contents"></A> <A HREF="manual002.html"><IMG SRC ="next_motif.gif" ALT="Next"></A> </BODY> </HTML>