Quintus Prolog

Last updated
Quintus Prolog
Developer(s) Swedish Institute of Computer Science
Initial release1984
Final release
3.5 / 29 December 2003;19 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]

Related Research Articles

Logic programming is a programming, database and knowledge-representation and reasoning paradigm which is based on formal logic. A program, database or knowledge base in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem 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:

<span class="mw-page-title-main">Macro (computer science)</span> Rule for substituting a set input with a set output

In computer programming, a macro is a rule or pattern that specifies how a certain input should be mapped to a replacement output. Applying a macro to an input is known as macro expansion. The input and output may be a sequence of lexical tokens or characters, or a syntax tree. Character macros are supported in software applications to make it easy to invoke common command sequences. Token and tree macros are supported in some programming languages to enable code reuse or to extend the language, sometimes for domain-specific languages.

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

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 object-oriented 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.

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.

In computer science, an abstract state machine (ASM) is a state machine operating on states that are arbitrary data structures.

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.

<span class="mw-page-title-main">Programming language theory</span> Branch of computer science

Programming language theory (PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of formal languages known as programming languages. Programming language theory is closely related to other fields including mathematics, software engineering, and linguistics. There are a number of academic conferences and journals in the area.

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.

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.

Modula-2 is a structured, procedural programming language developed between 1977 and 1985/8 by Niklaus Wirth at ETH Zurich. It was created as the language for the operating system and application software of the Lilith personal workstation. It was later used for programming outside the context of the Lilith.

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 . 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. doi:10.1145/773184.773191.

As of 12 Nov 2023, this article is derived in whole or in part from Fifty Years of Prolog and Beyond , authored by Philipp Körner, Michael Leuschel, Joao Barbosa, Vitor Santos Costa, Veronica Dahl, Manuel V. Hermenegildo, Jose F. Morales, Jan Wielemaker, Daniel Diaz, Salvador Abreu, Giovanni Ciatto. The copyright holder has licensed the content in a manner that permits reuse under CC BY-SA 3.0 and GFDL . All relevant terms must be followed.