Thank you a lot for your kind words, and for your interest!
The Prolog ISO standard currently prescribes less than 200 predicates (less than 150 if we discount variants that only differ in the number of arguments), here is a nice overview of all predicates that a conforming system must provide:
The ISO standard also allows conforming extensions that any Prolog system may add as implementation specific features. Notably, we have:
5 Compliance
5.1 Prolog processor
A conforming Prolog processor shall:
a) Correctly prepare for execution Prolog text which
conforms to:
1) the requirements of this part of ISO/IEC 13211,
and
2) the implementation defined and implementation
specific features of the Prolog processor,
etc.
The general trend and intention of modern Prolog systems is clear: A major goal is to add, as conforming extensions, declarative constructs that facilitate more general and readable Prolog code that is also amenable to logical reasoning and automated debugging. However, the extensions that SWI-Prolog provides are not conforming extensions, because they change the meaning of existing, conforming Prolog code in a way that deviates from the ISO standard. The following document provides a good overview of resulting consequences:
Note that it is possible to add infix dot syntax, efficient strings, constraints etc. all while conforming to ISO Prolog! This is the route taken by GNU Prolog, Scryer Prolog, SICStus Prolog, Tau Prolog, Trealla Prolog etc.
The Prolog ISO standard currently prescribes less than 200 predicates (less than 150 if we discount variants that only differ in the number of arguments), here is a nice overview of all predicates that a conforming system must provide:
http://www.complang.tuwien.ac.at/ulrich/iso-prolog/prologue
The ISO standard also allows conforming extensions that any Prolog system may add as implementation specific features. Notably, we have:
The general trend and intention of modern Prolog systems is clear: A major goal is to add, as conforming extensions, declarative constructs that facilitate more general and readable Prolog code that is also amenable to logical reasoning and automated debugging. However, the extensions that SWI-Prolog provides are not conforming extensions, because they change the meaning of existing, conforming Prolog code in a way that deviates from the ISO standard. The following document provides a good overview of resulting consequences:https://www.complang.tuwien.ac.at/ulrich/iso-prolog/SWI7_and...
Note that it is possible to add infix dot syntax, efficient strings, constraints etc. all while conforming to ISO Prolog! This is the route taken by GNU Prolog, Scryer Prolog, SICStus Prolog, Tau Prolog, Trealla Prolog etc.