• There are no items in your cart
We noticed you’re not on the correct regional site. Switch to our AMERICAS site for the best experience.
Dismiss alert

INCITS/ISO/IEC 13211-1 : 1995

Superseded

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

INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - PROLOG - PART 1: GENERAL CORE

Available format(s)

Hardcopy , PDF

Superseded date

13-05-2018

Language(s)

English

Published date

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

Describes: a) The representation of Prolog text, b) The syntax and constraints of the Prolog language, c) The semantic rules for interpreting Prolog text, d) The representation of input data to be processed by Prolog, e) The representation of output produced by Prolog, and f) The restrictions and limits imposed on a conforming Prolog processor.

DocumentType
Standard
Pages
207
ProductNote
Reconfirmed 1995
PublisherName
Information Technology Industry Council
Status
Superseded
SupersededBy

Standards Relationship
ISO/IEC 13211-1:1995 Identical

ISO/IEC 8859-1:1998 Information technology 8-bit single-byte coded graphic character sets Part 1: Latin alphabet No. 1
ISO/IEC TR 10034:1990 Guidelines for the preparation of conformity clauses in programming language standards
ISO/IEC 2382-15:1999 Information technology Vocabulary Part 15: Programming languages
BS 6154:1981 Method of defining syntactic metalanguage
ISO/IEC 10967-1:2012 Information technology — Language independent arithmetic — Part 1: Integer and floating point arithmetic
ISO/IEC 9899:2011 Information technology Programming languages C
ISO/IEC 646:1991 Information technology ISO 7-bit coded character set for information interchange

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.