![header thumbnail](/images/publishers\iti_cover.gif)
INCITS/ISO/IEC 13211-1 : 1995
Superseded
A superseded Standard is one, which is fully replaced by another Standard, which is a new edition of the same Standard.
View Superseded by
![header thumbnail](/images/publishers\iti_cover.gif)
INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - PROLOG - PART 1: GENERAL CORE
Hardcopy , PDF
13-05-2018
English
01-01-2007
Foreword
Introduction
1 Scope
1.1 Notes
2 Normative references
3 Definitions
4 Symbols and abbreviations
4.1 Notation
4.1.1 Basic mathematical types
4.1.2 Mathematical and set operators
4.1.3 Other functions
4.2 Abstract data type: stack
4.3 Abstract data type: mapping
5 Compliance
5.1 Prolog processor
5.2 Prolog text
5.3 Prolog goal
5.4 Documentation
5.5 Extensions
5.5.1 Syntax
5.5.2 Predefined operators
5.5.3 Character-conversion mapping
5.5.4 Types
5.5.5 Directives
5.5.6 Side effects
5.5.7 Control constructs
5.5.8 Flags
5.5.9 Built-in predicates
5.5.10 Evaluable functors
5.5.11 Reserved atoms
6 Syntax
6.1 Notation
6.1.1 Backus Naur Form
6.1.2 Abstract term syntax
6.2 Prolog text and data
6.2.1 Prolog text
6.2.2 Prolog data
6.3 Terms
6.3.1 Atomic terms
6.3.2 Variables
6.3.3 Compound terms - functional notation
6.3.4 Compound terms - operator notation
6.3.5 Compound terms - list notation
6.3.6 Compound terms - curly bracketed term
6.3.7 Terms - double quoted list notation
6.4 Tokens
6.4.1 Layout text
6.4.2 Names
6.4.3 Variables
6.4.4 Integer numbers
6.4.5 Floating point numbers
6.4.6 Double quoted lists
6.4.7 Back quoted strings
6.4.8 Other tokens
6.5 Processor character set
6.5.1 Graphic characters
6.5.2 Alphanumeric characters
6.5.3 Solo characters
6.5.4 Layout characters
6.5.5 Meta characters
6.6 Collating sequence
7 Language concepts and semantics
7.1 Types
7.1.1 Variable
7.1.2 Integer
7.1.3 Floating point
7.1.4 Atom
7.1.5 Compound term
7.1.6 Related terms
7.2 Term order
7.2.1 Variable
7.2.2 Floating point
7.2.3 Integer
7.2.4 Atom
7.2.5 Compound
7.3 Unification
7.3.1 The mathematical definition
7.3.2 Herbrand algorithm
7.3.3 Subject to occurs-check (STO) and not subject
to occurs-check (NSTO)
7.3.4 Normal unification in Prolog
7.4 Prolog text
7.4.1 Undefined features
7.4.2 Directives
7.4.3 Clauses
7.5 Database
7.5.1 Preparing a Prolog text for execution
7.5.2 Static and dynamic procedures
7.5.3 Private and public procedures
7.5.4 A logical database update
7.6 Converting a term to a clause, and a clause to a term
7.6.1 Converting a term to the head of a clause
7.6.2 Converting a term to the body of a clause
7.6.3 Converting the head of a clause to a term
7.6.4 Converting the body of a clause to a term
7.7 Executing a Prolog goal
7.7.1 Execution
7.7.2 Data types for the execution model
7.7.3 Initialization
7.7.4 A goal succeeds
7.7.5 A goal fails
7.7.6 Re-executing a goal
7.7.7 Selecting a clause for execution
7.7.8 Backtracking
7.7.9 Side effects
7.7.10 Executing a user-defined procedure
7.7.11 Executing a user-defined procedure with no
more clauses
7.7.12 Executing a built-in predicate
7.8 Control constructs
7.8.1 true/0
7.8.2 fail/0
7.8.3 call/1
7.8.4 !/0 - cut
7.8.5 (',')/2 - conjunction
7.8.6 (;)/2 - disjunction
7.8.7 (->)/2 - if-then
7.8.8 (;)/2 - if-then-else
7.8.9 catch/3
7.8.10 throw/1
7.9 Evaluating an expression
7.9.1 Description
7.9.2 Errors
7.10 Input/output
7.10.1 Sources and sinks
7.10.2 Streams
7.10.3 Read-options list
7.10.4 Write-options list
7.10.5 Writing a term
7.11 Flags
7.11.1 Flags defining integer type I
7.11.2 Other flags
7.12 Errors
7.12.1 The effect of an error
7.12.2 Error classification
8 Built-in predicates
8.1 The format of built-in predicate definitions
8.1.1 Description
8.1.2 Template and modes
8.1.3 Errors
8.1.4 Examples
8.1.5 Bootstrapped built-in predicates
8.2 Term unification
8.2.1 (=)/2 - Prolog unify
8.2.2 unify_with_occurs_check/2 - unify
8.2.3 (\=)/2 - not Prolog unifiable
8.3 Type testing
8.3.1 var/1
8.3.2 atom/1
8.3.3 integer/1
8.3.4 float/1
8.3.5 atomic/1
8.3.6 compound/1
8.3.7 nonvar/1
8.3.8 number/1
8.4 Term comparison
8.4.1 (@=<)/2 - term less than or equal, (==)/2 - term
identical, (\==)/2 - term not identical, (@<)/2
- term less than, (@>)/2 - term greater than,
(@>=)/2 - term greater than or equal
8.5 Term creation and decomposition
8.5.1 functor/3
8.5.2 arg/3
8.5.3 (=..)/ 2 - univ
8.5.4 copy_term/2
8.6 Arithmetic evaluation
8.6.1 (is)/2 - evaluate expression
8.7 Arithmetic comparison
8.7.1 (=:=)/2 - arithmetic equal, (=\=)/2 - arithmetic
not equal, (<)/2 - arithmetic less than, (=<)/2
- arithmetic less than or equal, (>)/2 -
arithmetic greater than, (>=)/2 - arithmetic
greater than or equal
8.8 Clause retrieval and information
8.8.1 clause/2
8.8.2 current-predicate/1
8.9 Clause creation and destruction
8.9.1 asserta/1
8.9.2 assertz/1
8.9.3 retract/1
8.9.4 abolish/1
8.10 All solutions
8.10.1 findall/3
8.10.2 bagof/3
8.10.3 setof/3
8.11 Stream selection and control
8.11.1 current_input/1
8.11.2 current_output/1
8.11.3 set_input/1
8.11.4 set_output/1
8.11.5 open/4, open/3
8.11.6 close/2, close/1
8.11.7 flush_output/1, flush_output/0
8.11.8 stream_property/2, at_end_of_stream/0,
at_end_of_stream/1
8.11.9 set_stream_position/2
8.12 Character input/output
8.12.1 get_char/2, get_char/1, get_code/1, get_code/2
8.12.2 peek_char/2, peek_char/1, peek_code/1,
peek_code/2
8.12.3 put_char/2, put_char/1, put_code/1, put_code/2,
nl/0, nl/1
8.13 Byte input/output
8.13.1 get_byte/2, get_byte/1
8.13.2 peek_byte/2, peek_byte/1
8.13.3 put_byte/2, put_byte/1
8.14 Term input/output
8.14.1 read_term/3, read_term/2, read/1, read/2
8.14.2 write_term/3, write_term/2, write/1, write/2,
writeq/1, writeq/2, write_canonical/1,
write_canonical/2
8.14.3 op/3
8.14.4 current_op/3
8.14.5 char_conversion/2
8.14.6 current_char_conversion/2
8.15 Logic and control
8.15.1 (\+)/1 - not provable
8.15.2 once/1
8.15.3 repeat/0
8.16 Atomic term processing
8.16.1 atom_length/2
8.16.2 atom_concat/3
8.16.3 sub_atom/5
8.16.4 atom_chars/2
8.16.5 atom_codes/2
8.16.6 char_cede/2
8.16.7 number_chars/2
8.16.8 number_codes/2
8.17 Implementation defined hooks
8.17.1 set_prolog_flag/2
8.17.2 current_prolog_flag/2
8.17.3 halt/0
8.17.4 halt/1
9 Evaluable functors
9.1 The simple arithmetic functors
9.1.1 Evaluable functors and operations
9.1.2 Exceptional values
9.1.3 Integer operations and axioms
9.1.4 Floating point operations and axioms
9.1.5 Mixed mode operations and axioms
9.1.6 Type conversion operations
9.1.7 Examples
9.2 The format of other evaluable functor definitions
9.2.1 Description
9.2.2 Template and modes
9.2.3 Errors
9.2.4 Examples
9.3 Other arithmetic functors
9.3.1 (**)/2 - power
9.3.2 sin/1
9.3.3 cos/1
9.3.4 atan/1
9.3.5 exp/1
9.3.6 log/1
9.3.7 sqrt/1
9.4 Bitwise functors
9.4.1 (>>)/2 - bitwise right shift
9.4.2 (<<)/2 - bitwise left shift
9.4.3 (/\)/2 - bitwise and
9.4.4 (\/)/2 - bitwise or
9.4.5 (\)/1 - bitwise complement
Annex
Annex A (informative) - Formal semantics
A.1 Introduction
A.1.1 Specification language: syntax
A.1.2 Specification language: semantics
A.1.3 Comments in the formal specification
A.1.4 About the style of the Formal Specification
A.1.5 References
A.2 An informal description
A.2.1 Search-tree for 'pure' Prolog
A.2.2 Search tree for 'pure' Prolog with cut
A.2.3 Search-tree for kernel Prolog
A.2.4 Database and database update view
A.2.5 Exception handling
A.2.6 Environments
A.2.7 The semantics of a standard program
A.2.8 Getting acquainted with the formal specification
A.2.9 Built-in predicates
A.2.10 Relationships with the informal semantics of 7.7
and 7.8
A.3 Data structures
A.3.1 Abstract databases and terms
A.3.2 Predicate indicator
A.3.3 Forest
A.3.4 Abstract lists, atoms, characters and lists
A.3.5 Substitutions and unification
A.3.6 Arithmetic
A.3.7 Difference lists and environments
A.3.8 Built-in predicates and packets
A.3.9 Input and output
A.4 The Formal Semantics
A.4.1 The kernel
A.5 Control constructs and built-in predicates
A.5.1 Control constructs
A.5.2 Term unification
A.5.3 Type testing
A.5.4 Term comparison
A.5.5 Term creation and decomposition
A.5.6 Arithmetic evaluation - (is)/2
A.5.7 Arithmetic comparison
A.5.8 Clause retrieval and information
A.5.9 Clause creation and destruction
A.5.10 All solutions
A.5.11 Stream selection and control
A.5.12 Character input/output
A.5.13 Byte input/output
A.5.14 Term input/output
A.5.15 Logic and control
A.5.16 Atomic term processing
A.5.17 Implementation defined hooks
Access your standards online with a subscription
Features
-
Simple online access to standards, technical information and regulations.
-
Critical updates of standards and customisable alerts and notifications.
-
Multi-user online standards collection: secure, flexible and cost effective.