Quintus Prolog

Last updated
Quintus Prolog
Developer(s) Swedish Institute of Computer Science
Initial release1984
Final release
3.5 / 29 December 2003;20 years ago (2003-12-29)
Type Prolog implementation
License Proprietary
Website quintus.sics.se

Quintus Prolog is a proprietary implementation of the Prolog programming language based on the Warren Abstract Machine. Originally developed by Quintus Computer Science, it is currently maintained by SICS. It was long known as the most highly-performing implementation of Prolog, and the early 1990s, it defined a de facto standard for Prolog implementations.

Contents

History

Quintus Prolog was first introduced in 1984 as an implementation of the recently proposed Warren Abstract Machine by Quintus Computer Science, which had been founded for this purpose by David H. D. Warren, William Kornfeld, Lawrence Byrd, Fernando Pereira and Cuthbert Hurd. [1] Quintus was sold to Intergraph Corporation in 1989, [2] [3] and was eventually acquired by SICS in 1998. [1] After several of its features were amalgamated into their Prolog implementation SICStus, its final version release was Quintus 3.5 in 2003. As of November 2023, Quintus is still maintained by SICS. [1] [4]

Features

The syntax used by Quintus Prolog was based on that of DEC-10 Prolog. [1] It was long known as the most highly performing implementation of Prolog, and was the first to implement optimisations such as instruction merging and specialisation for the Warren Abstract Machine. [1] [5]

Legacy

Prolog implementations and their mutual influences Prolog systems.svg
Prolog implementations and their mutual influences

Quintus Prolog rose to a de facto standard, and significantly influenced the ISO standard for Prolog developed in 1995/6. [1] In addition, while the module system envisaged by the ISO standard deviates from that of Quintus, the Quintus module system is in fact more widely adopted by modern Prolog implementations than that mandated by ISO. [1] Several other popular Prolog systems, both commercial and research-based, are directly influenced by Quintus Prolog, including SICStus, SWI-Prolog, YAP and Ciao. [1]

See also

Related Research Articles

Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical form, representing knowledge about some problem domain. Computation is performed by applying logical reasoning to that knowledge, to solve problems in the domain. Major logic programming language families include Prolog, Answer Set Programming (ASP) and Datalog. In all of these languages, rules are written in the form of clauses:

Prolog is a logic programming language that has its origins in artificial intelligence, automated theorem proving and computational linguistics.

<span class="mw-page-title-main">Serialization</span> Conversion process for computer data

In computing, serialization is the process of translating a data structure or object state into a format that can be stored or transmitted and reconstructed later. When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object. For many complex objects, such as those that make extensive use of references, this process is not straightforward. Serialization of objects does not include any of their associated methods with which they were previously linked.

In computer science, an abstract machine is a theoretical model that allows for a detailed and precise analysis of how a computer system functions. It is similar to a mathematical function in that it receives inputs and produces outputs based on predefined rules. Abstract machines vary from literal machines in that they are expected to perform correctly and independently of hardware. Abstract machines are "machines" because they allow step-by-step execution of programmes; they are "abstract" because they ignore many aspects of actual (hardware) machines. A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. They can be used for purely theoretical reasons as well as models for real-world computer systems. In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyse the complexity of algorithms. This use of abstract machines is fundamental to the field of computational complexity theory, such as finite state machines, Mealy machines, push-down automata, and Turing machines.

David H. D. Warren is a computer scientist who worked primarily on logic programming and in particular the programming language Prolog in the 1970s and 1980s. Warren wrote the first compiler for Prolog, and the Warren Abstract Machine execution environment for Prolog is named after him.

<span class="mw-page-title-main">Ada Semantic Interface Specification</span> Interface

The Ada Semantic Interface Specification (ASIS) is a layered, open architecture providing vendor-independent access to the Ada Library Environment. It allows for the static analysis of Ada programs and libraries. It is an open, published interface library that consists of the Ada environment and their tools and applications.

SWI-Prolog is a free implementation of the programming language Prolog, commonly used for teaching and semantic web applications. It has a rich set of features, libraries for constraint logic programming, multithreading, unit testing, GUI, interfacing to Java, ODBC and others, literate programming, a web server, SGML, RDF, RDFS, developer tools, and extensive documentation.

Constraint Handling Rules (CHR) is a declarative, rule-based programming language, introduced in 1991 by Thom Frühwirth at the time with European Computer-Industry Research Centre (ECRC) in Munich, Germany. Originally intended for constraint programming, CHR finds applications in grammar induction, type systems, abductive reasoning, multi-agent systems, natural language processing, compilation, scheduling, spatial-temporal reasoning, testing, and verification.

ECLiPSe is a software system for the development and deployment of constraint logic programming applications, e.g., in the areas of optimization, planning, scheduling, resource allocation, timetabling, transport, etc. It is also suited for teaching most aspects of combinatorial problem solving, e.g., problem modeling, constraint programming, mathematical programming, and search techniques. It contains constraint solver libraries, a high-level modeling and control language, interfaces to third-party solvers, an integrated development environment and interfaces for embedding into host environments.

In computer science, higher-order abstract syntax is a technique for the representation of abstract syntax trees for languages with variable binders.

In computer science, a term index is a data structure to facilitate fast lookup of terms and clauses in a logic program, deductive database, or automated theorem prover.

In computer science, the well-founded semantics is a three-valued semantics for logic programming, which gives a precise meaning to general logic programs.

XSB is the name of a dialect of the Prolog programming language and its implementation developed at Stony Brook University in collaboration with the Katholieke Universiteit Leuven, the New University of Lisbon, Uppsala University and software vendor XSB, Inc.

Logtalk is an object-oriented logic programming language that extends and leverages the Prolog language with a feature set suitable for programming in the large. It provides support for encapsulation and data hiding, separation of concerns and enhanced code reuse. Logtalk uses standard Prolog syntax with the addition of a few operators and directives.

YAP is an open-source, high-performance implementation of the Prolog programming language developed at LIACC/Universidade do Porto and at COPPE Sistemas/UFRJ. Its Prolog engine is based in the WAM, with several optimizations for better performance. YAP follows the Edinburgh tradition, and is largely compatible with the ISO-Prolog standard and with Quintus Prolog and SICStus Prolog. YAP has been developed since 1985. The original version was written in assembly, C and Prolog, and achieved high performance on m68k-based machines.

The following Comparison of Prolog implementations provides a reference for the relative feature sets and performance of different implementations of the Prolog computer programming language. A comprehensive discussion of the most significant Prolog systems is presented in an article published in the 50-years of Prolog anniversary issue of the journal Theory and Practice of Logic Programming (TPLP).

<span class="mw-page-title-main">Cuthbert Hurd</span> American computer scientist

Cuthbert Corwin Hurd was an American computer scientist and entrepreneur, who was instrumental in helping the International Business Machines Corporation develop its first general-purpose computers.

SICStus Prolog is a proprietary, ISO-conforming implementation of the logic programming language Prolog. It is developed by the Swedish Institute of Computer Science since 1985 and puts a strong focus on performance and scalability.

Tabling is a technique first developed for natural language processing, where it was called Earley parsing. It consists of storing in a table partial successful analyses that might come in handy for future reuse.

References

  1. 1 2 3 4 5 6 7 8 Körner, Philipp; Leuschel, Michael; Barbosa, João; Costa, Vítor Santos; Dahl, Verónica; Hermenegildo, Manuel V.; Morales, Jose F.; Wielemaker, Jan; Diaz, Daniel; Abreu, Salvador; Ciatto, Giovanni (November 2022). "Fifty Years of Prolog and Beyond". Theory and Practice of Logic Programming. 22 (6): 776–858. doi: 10.1017/S1471068422000102 . hdl: 10174/33387 . ISSN   1471-0684.
  2. John A. N. Lee (1995). "Cuthbert C. Hurd". International biographical dictionary of computer pioneers. Taylor & Francis for IEEE Computer Society Press. pp.  388–389. ISBN   978-1-884964-47-3.
  3. David E. Weisberg (2008). "Intergraph" (PDF). The Engineering Design Revolution:The People, Companies and Computer Systems That Changed Forever the Practice of Engineering. Archived from the original (PDF) on July 7, 2010. Retrieved May 26, 2010.
  4. "Quintus Prolog Homepage". quintus.sics.se. Retrieved 2023-11-12.
  5. Nässén, Henrik; Carlsson, Mats; Sagonas, Konstantinos (2001-09-05). "Instruction merging and specialization in the SICStus Prolog virtual machine". Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming. New York, NY, USA: ACM. pp. 49–60. doi:10.1145/773184.773191. ISBN   1-58113-388-X.