Knowledge

Prolog

Source 📝

1369:. If the negated query can be refuted, it follows that the query, with the appropriate variable bindings in place, is a logical consequence of the program. In that case, all generated variable bindings are reported to the user, and the query is said to have succeeded. Operationally, Prolog's execution strategy can be thought of as a generalization of function calls in other languages, one difference being that multiple clause heads can match a given call. In that case, the system creates a choice-point, 373: 4498: 9862: 7533: 7505: 4556:, and there implemented an alternative front-end, which came to define the "Edinburgh Prolog" syntax used by most modern implementations. Warren also implemented the first compiler for Prolog, creating the influential DEC-10 Prolog in collaboration with Fernando Pereira. Warren later generalised the ideas behind DEC-10 Prolog, to create the 4671:
over natural language parse trees. The developers have stated: "We required a language in which we could conveniently express pattern matching rules over the parse trees and other annotations (such as named entity recognition results), and a technology that could execute these rules very efficiently.
3731:
to derive type and mode information of predicates at compile time, or compile to real machine code for high performance. Devising efficient implementation methods for Prolog code is a field of active research in the logic programming community, and various other execution methods are employed in some
3881:, there were attempts to implement Prolog in hardware with the aim of achieving faster execution with dedicated architectures. Furthermore, Prolog has a number of properties that may allow speed-up through parallel execution. A more recent approach has been to compile restricted Prolog programs to a 4036:
The syntax of Prolog does not specify which arguments of a predicate are inputs and which are outputs. However, this information is significant and it is recommended that it be included in the comments. Modes provide valuable information when reasoning about Prolog programs and can also be used to
1373:
the goal with the clause head of the first alternative, and continues with the goals of that first alternative. If any goal fails in the course of executing the program, all variable bindings that were made since the most recent choice-point was created are undone, and execution continues with the
4480:
is a lightweight Prolog system for distributed applications and infrastructures, intentionally designed around a minimal core, to be either statically or dynamically configured by loading/unloading libraries of predicates. tuProlog natively supports multi-paradigm programming, providing a clean,
4463:
is a Prolog interpreter written in (managed) C#. Can easily be integrated in C# programs. Characteristics: reliable and fairly fast interpreter, command line interface, Windows-interface, builtin DCG, XML-predicates, SQL-predicates, extendible. The complete source code is available, including a
3706:
consists of two parts. ISO/IEC 13211-1, published in 1995, aims to standardize the existing practices of the many implementations of the core elements of Prolog. It has clarified aspects of the language that were previously ambiguous and leads to portable programs. There are three corrigenda:
3916:
is considered to be complex because not all Prolog compilers support modules, and there are compatibility problems between the module systems of the major Prolog compilers. Portability of Prolog code across implementations has also been a problem, but developments since 2007 have meant: "the
2118:
A higher-order predicate is a predicate that takes one or more other predicates as arguments. Although support for higher-order programming takes Prolog outside the domain of first-order logic, which does not allow quantification over predicates, ISO Prolog now has some built-in higher-order
3920:
Software developed in Prolog has been criticised for having a high performance penalty compared to conventional programming languages. In particular, Prolog's non-deterministic evaluation strategy can be problematic when programming deterministic computations, or when even using "don't care
2557:, a facility analogous to macros in other languages) according to a few straightforward rewriting rules, resulting in ordinary Prolog clauses. Most notably, the rewriting equips the predicate with two additional arguments, which can be used to implicitly thread state around, analogous to 504:
of the negated query. If the negated query can be refuted, i.e., an instantiation for all free variables is found that makes the union of clauses and the singleton set consisting of the negated query false, it follows that the original query, with the found instantiation applied, is a
3921:
non-determinism" (where a single choice is made instead of backtracking over all possibilities). Cuts and other language constructs may have to be used to achieve desirable performance, destroying one of Prolog's main attractions, the ability to run programs "backwards and forwards".
619:
is composed of an atom called a "functor" and a number of "arguments", which are again terms. Compound terms are ordinarily written as a functor followed by a comma-separated list of argument terms, which is contained in parentheses. The number of arguments is called the term's
3911:
Although Prolog is widely used in research and education, Prolog and other logic programming languages have not had a significant impact on the computer industry in general. Most applications are small by industrial standards, with few exceeding 100,000 lines of code.
2158:
To convert solutions from temporal representation (answer substitutions on backtracking) to spatial representation (terms), Prolog has various all-solutions predicates that collect all answer substitutions of a given query in a list. This can be used for
4540:. It was motivated in part by the desire to reconcile the use of logic as a declarative knowledge representation language with the procedural representation of knowledge that was popular in North America in the late 1960s and early 1970s. According to 7210:
David H D Warren, Luis M. Pereira and Fernando Pereira, Prolog - the language and its implementation compared with Lisp. ACM SIGART Bulletin archive, Issue 64. Proceedings of the 1977 symposium on Artificial intelligence and programming languages, pp
2721:), it is possible to write customized interpreters that augment Prolog with domain-specific features. For example, Sterling and Shapiro present a meta-interpreter that performs reasoning with uncertainty, reproduced here with slight modifications: 3860:
Subgoals encountered in a query evaluation are maintained in a table, along with answers to these subgoals. If a subgoal is re-encountered, the evaluation reuses information from the table rather than re-performing resolution against program
4817:
is an extension of core Prolog that features polymorphic typing, modular programming, and higher-order programming, including direct support for terms with variable-binding operators through so-called λ-tree syntax and higher-order pattern
5461:
Philipp Körner; Michael Leuschel; João Barbosa; Vítor Santos Costa; Verónica Dahl; Manuel V. Hermenegildo; Jose F. Morales; Jan Wielemaker; Daniel Diaz; Salvador Abreu; Giovanni Ciatto (November 2022), "Fifty Years of Prolog and Beyond",
3756:
or, more generally, tail calls: A clause's stack frame is discarded before performing a call in a tail position. Therefore, deterministic tail-recursive predicates are executed with constant stack space, like loops in other languages.
3928:, a procedural reading of a Prolog program is needed to understand it. The order of clauses in a Prolog program is significant, as the execution strategy of the language depends on it. Other logic programming languages, such as 611:
are denoted by a string consisting of letters, numbers and underscore characters, and beginning with an upper-case letter or underscore. Variables closely resemble variables in logic in that they are placeholders for arbitrary
4487:
is a bi-directional interface between Prolog and Python using portable low-level primitives. It was initially developed for XSB by Anderson and Swift, but has been adopted as a joint initiative by the XSB, Ciao and SWI-Prolog
4754:
dialect of Prolog, which is very different from standard Prolog. As Turbo Prolog, it was marketed by Borland, but is now developed and marketed by the Danish firm Prolog Development Center (PDC) that originally produced
1223:, using graphics and otherwise communicating with the operating system. These predicates are not given a relational meaning and are only useful for the side-effects they exhibit on the system. For example, the predicate 1437:. Again, this can be proved by the corresponding fact. Since all goals could be proved, the query succeeds. Since the query contained no variables, no bindings are reported to the user. A query with variables, like: 4426:
provides native syntax integration with Java, agent messaging and reaction rules. Prova positions itself as a rule-based scripting (RBS) system for middleware. The language breaks new ground in combining
659:: A sequence of characters surrounded by quotes is equivalent to either a list of (numeric) character codes, a list of characters (atoms of length 1), or an atom depending on the value of the Prolog flag 4393:
is a bi-directional Java Prolog bridge which ships with SWI-Prolog by default, allowing Java and Prolog to call each other (recursively). It is known to have good concurrency support and is under active
6746:. Vangelis Vassiliadis, Jan Wielemaker and Chris Mungall. Proceedings of the 5th International Workshop on OWL: Experiences and Directions (OWLED 2009), Chantilly, VA, United States, October 23–24, 2009 6172:
Logic programming for the real world. Zoltan Somogyi, Fergus Henderson, Thomas Conway, Richard O'Keefe. Proceedings of the ILPS'95 Postconference Workshop on Visions for the Future of Logic Programming.
4123:
and first released in 1989 for MS-DOS PCs. Support for other platforms was added, and a second version was released in 1995. A book about Prolog++ by Chris Moss was published by Addison-Wesley in 1994.
2476:, which is in the ISO Standard. However, while most Prolog systems support structuring the code into modules, virtually no implementation adheres to the modules part of the ISO standard. Instead, most 9188: 4101:
is an object-oriented logic programming language that can use most Prolog implementations as a back-end compiler. As a multi-paradigm language, it includes support for both prototypes and classes.
444:
Prolog was one of the first logic programming languages and remains the most popular such language today, with several free and commercial implementations available. The language has been used for
3783:
lookups. Indexing only affects program performance, it does not affect semantics. Most Prologs only use indexing on the first term, as indexing on all terms is expensive, but techniques based on
5333:
D. Barker-Plummer. Cliche programming in Prolog. In M. Bruynooghe, editor, Proc. Second Workshop on Meta-Programming in Logic, pages 247--256. Dept. of Comp. Sci., Katholieke Univ. Leuven, 1990.
3869:
or linear tabling. In a multi-threaded Prolog system tabling results could be kept private to a thread or shared among all threads. And in incremental tabling, tabling might react to changes.
4481:
seamless integration model between Prolog and mainstream object-oriented languages, namely Java, for tuProlog Java version, and any .NET-based language (C#, F#..), for tuProlog .NET version.
1349:
It expresses that X is an ancestor of Y if X is parent of Y or X is parent of an ancestor of Y. It is recursive because it is defined in terms of itself (there is a call to predicate
2469: 3648:
This machine performs incrementation by one of a number in unary encoding: It loops over any number of "1" cells and appends an additional "1" at the end. Example query and result:
3679:
This illustrates how any computation can be expressed declaratively as a sequence of state transitions, implemented in Prolog as a relation between successive states of interest.
5154: 4408:
and Prolog, implementing bi-directional predicate/method calling between both languages. Java objects can be mapped into Prolog terms and vice versa. Allows the development of
3806:
and SWI-Prolog, now implement hashing to help handle large datasets more efficiently. This tends to yield very large performance gains when working with large corpora such as
2500: 4255:
is a free and basic Prolog interpreter. From version 4 and above Cedar has a FCA (Flash Cedar App) support. This provides a new platform to programming in Prolog through
2492:
module system. However, further convenience predicates concerning modules are provided by some implementations only and often have subtle differences in their semantics.
5504: 1710:
This comparison shows the prompt ("?-" vs "| ?-") and resolution status ("true." vs "yes", "false." vs "no") can differ from one Prolog implementation to another.
5412:"With regard to Prolog variables, variables only in the head are implicitly universally quantified, and those only in the body are implicitly existentially quantified" 3976:
Prolog is an untyped language. Attempts to introduce and extend Prolog with types began in the 1980s, and continue as of 2008. Type information is useful not only for
6810:
Andersen, C. and Swift, T., 2023. The Janus System: a bridge to new prolog applications. In Prolog: The Next 50 Years (pp. 93-104). Cham: Springer Nature Switzerland.
7071: 1413:
is the first one, so proving the query is equivalent to proving the body of that clause with the appropriate variable bindings in place, i.e., the conjunction
6067: 3917:
portability within the family of Edinburgh/Quintus derived Prolog implementations is good enough to allow for maintaining portable real-world applications."
3733: 4771:
is an offshoot of Prolog geared toward software engineering in the large with a static, polymorphic type system, as well as a mode and determinism system.
9906: 8700: 3707:
Cor.1:2007, Cor.2:2012, and Cor.3:2017. ISO/IEC 13211-2, published in 2000, adds support for modules to the standard. The standard is maintained by the
5199: 4761:
is a subset of Prolog. It is limited to relationships that may be stratified and does not allow compound terms. In contrast to Prolog, Datalog is not
4567:, reportedly causing many nationalistic debates on the merits of the languages. Much of the modern development of Prolog came from the impetus of the 4544:, the first Prolog system was developed in 1972 by Colmerauer and Phillipe Roussel. The first implementation of Prolog was an interpreter written in 9886: 8695: 1361:
Execution of a Prolog program is initiated by the user's posting of a single goal, called the query. Logically, the Prolog engine tries to find a
9896: 8917: 7237: 1557:(i.e. contains no variables). Soundness is lost if the argument contains variables and the proof procedure is complete. In particular, the query 8705: 2511:
standard used by other Prolog systems, is amenable to precise static analysis, supports term hiding, and facilitates programming in the large.
9901: 8200: 7578: 7114: 5436: 5185: 3699: 529:
when the logical paradigm is inconvenient. It has a purely logical subset, called "pure Prolog", as well as a number of extralogical features.
2561:
in other languages. DCGs are often used to write parsers or list generators, as they also provide a convenient interface to difference lists.
1581:. If a solution exists then it is printed. If there are multiple solutions to the query, then these can be requested by entering a semi-colon 6722:
Wielemaker, Jan; Hildebrand, Michiel; van Ossenbruggen, Jacco (2007), Heymans, S.; Polleres, A.; Ruckhaus, E.; Pearse, D.; Gupta, G. (eds.),
4470:
A Prolog compiler and interpreter in PHP 5.3. A library that can be used standalone or within Symfony2.1 framework which was translated from
644:
is an ordered collection of terms. It is denoted by square brackets with the terms separated by commas, or in the case of the empty list, by
2143:. Furthermore, since arbitrary Prolog goals can be constructed and evaluated at run-time, it is easy to write higher-order predicates like 471:
Prolog is a Turing-complete, general-purpose programming language, which is well-suited for intelligent knowledge-processing applications.
5106:
Inductive Synthesis of Functional Programs: Universal Planning, Folding of Finite Programs, and Schema Abstraction by Analogical Reasoning
9911: 8422: 4284: 5063:
Felty, Amy. "A logic programming approach to implementing higher-order term rewriting." Extensions of Logic Programming (1992): 135-161.
7521: 6207: 5158: 9392: 4064:. Most Prolog systems ship with at least one constraint solver for finite domains, and often also with solvers for other domains like 9916: 9497: 9417: 9208: 9203: 9049: 5999:. Third International Conference on Logic Programming. Lecture Notes in Computer Science. Vol. 225. Springer. pp. 172–179. 4568: 3878: 9215: 6931: 5231: 3932:, are truly declarative but restrict the language. As a result, many practical Prolog programs are written to conform to Prolog's 2532: 7569: 7526: 6267:
Dantsin, Evgeny; Eiter, Thomas; Gottlob, Georg; Voronkov, Andrei (2001). "Complexity and Expressive Power of Logic Programming".
4734: 4104: 286: 4281:
extends Prolog with a logical theory of state-changing update operators. It has both a model-theoretic and procedural semantics.
3944:
Various implementations have been developed from Prolog to extend logic programming abilities in many directions. These include
9748: 7938: 5672: 5654: 5636: 5516: 947:
is a set of predicates. For example, the following Prolog program, which defines some family relations, has four predicates:
8110: 7516: 7098: 7065: 7047: 7029: 6997: 6609: 6532: 6470: 6393: 6352: 6012: 5971: 5790: 5620: 5595: 5367: 5318: 5209: 5114: 5084: 5048: 4959: 4931: 4906: 4881: 6874: 3891:
implemented Prolog for use with the Sega AI Computer, released for the Japanese market in 1986. Prolog was used for reading
9891: 9817: 9618: 9141: 8524: 8115: 8085: 6731:
Proceedings of the 2nd Workshop on Applications of Logic Programming and to the Web, Semantic Web and Semantic Web Services
5954:
Abe, S.; Bandoh, T.; Yamaguchi, S.; Kurosawa, K.; Kiriyama, K. (1987). "High performance integrated Prolog processor IPP".
4700: 4655:(Unstructured Information Management Architecture) framework. The system was written in various languages, including Java, 3688: 2477: 7033: 5074: 699:
and is read as "Head is true if Body is true". A rule's body consists of calls to predicates, which are called the rule's
525:, such as printing a value to the screen. Because of this, the programmer is permitted to use some amount of conventional 9462: 8792: 8589: 7257: 7230: 4673: 1172:
Due to the relational nature of many built-in predicates, they can typically be used in several directions. For example,
204: 2495:
Some systems chose to implement module concepts as source-to-source compilation into base ISO Prolog, as is the case of
7913: 4248: 2096:. Some design patterns in Prolog are skeletons, techniques, cliches, program schemata, logic description schemata, and 8989: 8013: 7262: 7204: 7167: 7149: 7083: 6316: 6245: 5704: 4851:; an atom of Prolog (depending on the context) is a constant, function symbol or predicate symbol of logic. 4717: 4484: 2089: 1722:
with three optimization passes could be implemented as a relation between an initial program and its optimized form:
1421:. Two clause heads match this goal. The system creates a choice-point and tries the first alternative, whose body is 4107:
is a small, portable, object-oriented extension to Prolog by Margaret McDougall of EdCAAD, University of Edinburgh.
9553: 8725: 8569: 7267: 7017: 4774:
GraphTalk is a proprietary implementation of Warren's Abstract Machine, with additional object-oriented properties.
3723:
For efficiency, Prolog code is typically compiled to abstract machine code, often influenced by the register-based
2558: 1219:
As a general purpose language, Prolog also provides various built-in predicates to perform routine activities like
6819:
Colmerauer, A. and Roussel, P., 1996. The birth of Prolog. In History of programming languages---II (pp. 331-367).
5896:
Proceedings of the 5th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming
3885:. However, rapid progress in general-purpose hardware has consistently overtaken more specialised architectures. 1585:. There are guidelines on good programming practice to improve code efficiency, readability and maintainability. 6723: 4730: 9648: 9643: 9402: 9350: 7536: 7468: 7341: 7223: 5276:
Kirschenbaum, M.; Sterling, L.S. (1993). "Applying Techniques to Skeletons - Patterns for Prolog Programming".
4990: 4778: 4768: 4319: 4218: 1378:. For example, given the family relation program defined above, the following query will be evaluated to true: 1370: 522: 514: 350: 306: 9442: 8772: 8285: 7933: 7511: 7489: 7443: 7416: 7391: 7351: 6373: 4798: 4782: 4343: 3882: 358: 330: 6987: 6146: 5746:
Van Roy, P.; Despain, A. M. (1992). "High-performance logic programming with the Aquarius Prolog compiler".
4988:
Stickel, M. E. (1988). "A prolog technology theorem prover: Implementation by an extended prolog compiler".
509:
of the program. This makes Prolog (and other logic programming languages) particularly useful for database,
7483: 7386: 7356: 6378:
Logic programming: 24th international conference, ICLP 2008, Udine, Italy, December 9-13, 2008: proceedings
4660: 4636: 4151: 4120: 4045: 3949: 3803: 231: 6183:"FAQ: Prolog Resource Guide 1/2 [Monthly posting]Section - [1-8] The Prolog 1000 Database" 9787: 9265: 7562: 7458: 7453: 7396: 7376: 4751: 4564: 4450: 4368: 4323: 4195: 3953: 3841: 2504: 2438: 485:
In Prolog, program logic is expressed in terms of relations, and a computation is initiated by running a
480: 465: 219: 93: 17: 4060:
problems and is thus useful for applications in industrial settings, such as automated time-tabling and
9447: 9355: 9305: 9064: 8397: 8392: 7791: 7401: 7297: 7280: 4705: 4339: 4057: 1216:). For this reason, a comparatively small set of library predicates suffices for many Prolog programs. 680:. Two types of Horn clauses are used to define Prolog programs: rules and facts. A rule is of the form 6182: 5386:
Naish, Lee (1996). Higher-order logic programming in Prolog (Report). Department of Computer Science,
4801:
began life with a Prolog-based implementation and maintains much of Prolog's unification-based syntax.
9713: 9658: 9437: 9422: 8680: 8100: 7596: 7411: 7366: 6838: 6128: 4175: 1718:
Any computation can be expressed declaratively as a sequence of state transitions. As an example, an
598: 445: 403: 399: 354: 318: 35: 6909: 6283: 1472:
also succeeds. One would insert additional goals to describe the relevant restrictions, if desired.
9761: 9668: 9457: 9432: 8644: 8639: 7448: 7331: 6780: 5396: 5286: 5004: 4409: 4358: 4309: 4272: 3913: 3819: 2113: 2097: 571:
is a symbol name starting with a lower case letter or guarded by quotes. Examples of atoms include
6430: 547: 9315: 8857: 8847: 8842: 8417: 8402: 8342: 7776: 7771: 7731: 6228: 5387: 4557: 4553: 4432: 4049: 3925: 3853: 3728: 3724: 2578: 2542: 2536: 1805: 1242:
predicate defined in the family relation program above. The following Prolog program defines the
489:
over these relations. Relations and queries are constructed using Prolog's single data type, the
422: 395: 6516: 6509:"Improving the execution speed of compiled Prolog with modes, clause selection, and determinism" 6508: 4412:(GUIs) and other functions in Java while leaving logic processing in the Prolog layer. Supports 9865: 9633: 9623: 8752: 8170: 7751: 7555: 7317: 6775: 6425: 6278: 5391: 5281: 4999: 4711: 4428: 4372: 4327: 4130:
is a multi-paradigm language with interfaces, classes, implementations and object expressions.
2714: 2574: 2442: 711: 526: 6830: 6200: 3771:
Finding clauses that are unifiable with a term in a query is linear in the number of clauses.
676:
Prolog programs describe relations, defined by means of clauses. Pure Prolog is restricted to
9054: 8564: 7786: 7756: 7649: 7639: 7600: 7592: 6667: 6269: 6118: 4975: 4222: 4171: 4061: 6204: 5536:
Abreu; Nogueira (2005), "Using a Logic Programming Language with Persistence and Contexts",
5460: 3749: 9812: 9718: 9452: 9427: 9270: 9111: 8862: 8549: 8352: 8225: 8008: 7246: 5888: 4687:
is implemented in Prolog. TerminusDB is designed for collaboratively building and curating
4092: 3865:
Tabling can be extended in various directions. It can support recursive predicates through
939:) is a collection of clauses whose heads have the same name and arity. We use the notation 510: 418: 47: 6486:
Covington, Michael; Bagnara, Roberto; et al. (2010). "Coding guidelines for Prolog".
6104: 5956:
Proceedings of the 14th annual international symposium on Computer architecture - ISCA '87
1433:
is generated, and the next goal to be proved is the second part of the above conjunction:
8: 9653: 7322: 6882: 6743: 4621: 4401: 4113:
was a frame-based language combining objects and Prolog II from CNRS, Marseille, France.
3040: 2473: 1719: 1489: 1485: 727: 719: 506: 6733:, CEUR Workshop Proceedings, vol. 287, Porto, Portugal: CEUR-WS.org, pp. 84–98 6681: 5909:
Swift, T.; Warren, D. S. (2011). "XSB: Extending Prolog with Tabled Logic Programming".
5280:. Lecture Notes in Computer Science / Lecture Notes in Artificial Intelligence: 27–140. 730:. Conjunctions and disjunctions can only appear in the body, not in the head of a rule. 9598: 9533: 7873: 7155: 6855: 6793: 6765: 6704: 6487: 6443: 6296: 6086: 5977: 5936: 5918: 5869: 5763: 5258: 5240: 5226: 5037: 5017: 4792: 4585: 4549: 3961: 3933: 3703: 3043:. Turing completeness of Prolog can be shown by using it to simulate a Turing machine: 2160: 2109: 1374:
next alternative of that choice-point. This execution strategy is called chronological
1362: 498: 461: 143: 7130: 4804: 4509:
was chosen by Philippe Roussel, at the suggestion of his wife, as an abbreviation for
4383:, and any language or environment which can call a .dll or .so. It is implemented for 239: 8427: 7302: 7200: 7163: 7145: 7094: 7079: 7061: 7043: 7025: 6993: 6605: 6562: 6549: 6528: 6466: 6389: 6369: 6348: 6329: 6008: 5967: 5838: 5825:
Colomb, Robert M. (1991). "Enhancing unification in PROLOG through clause indexing".
5786: 5733: 5616: 5591: 5363: 5314: 5205: 5172: 5110: 5080: 5044: 4955: 4927: 4902: 4877: 4836: 4672:
We found that Prolog was the ideal choice for the language due to its simplicity and
4648: 4376: 4331: 4278: 4088: 3896: 3789: 3715:/WG17 working group. ANSI X3J17 is the US Technical Advisory Group for the standard. 1554: 430: 410: 391: 52: 7052:(This edition is updated for ISO Prolog. Prior editions described Edinburgh Prolog.) 6859: 6797: 6447: 5981: 5873: 5767: 5021: 3856:; execution time can be reduced by using more memory to store intermediate results: 2312:
This can be used to enumerate perfect numbers, and to check if a number is perfect.
1409:
This is obtained as follows: Initially, the only matching clause-head for the query
9161: 8902: 8230: 7547: 7182: 7125: 6891: 6847: 6785: 6708: 6696: 6597: 6557: 6520: 6435: 6381: 6325: 6288: 6090: 6076: 6041: 6000: 5959: 5940: 5928: 5861: 5834: 5755: 5481: 5471: 5306: 5250: 5130: 5009: 4668: 4578: 4529: 4139: 3892: 2577:(reflection). Its implicit execution strategy makes it possible to write a concise 704: 64: 7120:
Feliks Kluźniak and Stanisław Szpakowicz (with a contribution by Janusz S. Bień).
6300: 6061:
Gupta, G.; Pontelli, E.; Ali, K. A. M.; Carlsson, M.; Hermenegildo, M. V. (2001).
5262: 4628:) are shown by trying and failing to solve the corresponding positive conditions B 4441:
An embeddable Prolog engine for Java. It includes a small IDE and a few libraries.
4346:, and others. It exploits the dedicated string data type which LPA Prolog provides 9771: 9492: 9397: 9151: 9079: 9074: 9069: 8554: 8517: 8512: 8507: 8502: 8497: 8492: 8487: 6936: 6385: 6211: 5411: 5104: 4762: 4688: 4541: 4533: 4518: 4252: 4202: 4065: 4052:. A constraint logic program allows constraints in the body of clauses, such as: 3032: 2164: 2093: 59: 5569:
Sagonas; Swift; Warren (1994), "XSB as an efficient deductive database engine",
5347:. Procs Twelfth International Conference on Logic Programming. pp. 467–481. 3852:, which frees the user from manually storing intermediate results. Tabling is a 2507:
designed a strict module system that, while being basically compatible with the
1365:
refutation of the negated query. The resolution method used by Prolog is called
9059: 8807: 8619: 8482: 8472: 8467: 8462: 8457: 8452: 8447: 8442: 8437: 7806: 7796: 5134: 4848: 4844: 4738: 4681: 3965: 3780: 3776: 3753: 3737: 2485: 1366: 453: 243: 6789: 6700: 6233:. Proc. 31st meeting of the Japan Society for Software Science and Technology. 5932: 5865: 5476: 5254: 4444: 1541:) fails. If no proof can be found, the original goal succeeds. Therefore, the 30:
This article is about the programming language. For the narrative device, see
9880: 9847: 9822: 9807: 9743: 9738: 9733: 9728: 9723: 9568: 9513: 9482: 9472: 9335: 9325: 9295: 9290: 9240: 9220: 9198: 9183: 9136: 9101: 9044: 9039: 9029: 8907: 8852: 8827: 8822: 8802: 8675: 8215: 7654: 7624: 7421: 7188: 7177:: 'POPLOG's two-level virtual machine support for interactive languages', in 6601: 6123: 6004: 5310: 4744: 4664: 4460: 4405: 4245: 4187: 4147: 4127: 4079:
is an object-oriented knowledge representation and reasoning system based on
3772: 3766: 605:. Most of the major Prolog systems support arbitrary length integer numbers. 449: 372: 362: 6625: 6368:
Schrijvers, Tom; Santos Costa, Vitor; Wielemaker, Jan; Demoen, Bart (2008).
6314:
Mycroft, A.; O'Keefe, R. A. (1984). "A polymorphic type system for prolog".
4287:
has been created in order to answer Prolog's lack of graphics and interface.
1573:. Prolog can be used interactively by entering queries at the Prolog prompt 1417:. The next goal to be proved is the leftmost one of this conjunction, i.e., 376: 9708: 9678: 9538: 8882: 8877: 8740: 8735: 8730: 8649: 8594: 8544: 8477: 8432: 8407: 8337: 8332: 8327: 8322: 8317: 8275: 8240: 8150: 8145: 7973: 7781: 7473: 7312: 7192: 7174: 6959: 6147:"Computer science - Programming Languages, Syntax, Algorithms | Britannica" 6132: 5808:
Indexing Prolog Clauses via Superimposed Code Words and Field Encoded Words
5729: 4840: 4467: 4256: 4214: 3957: 3837: 3748:
Prolog systems typically implement a well-known optimization method called
2151:, which filters elements that satisfy a given predicate, also allowing for 2147:, which applies an arbitrary predicate to each member of a given list, and 1375: 1220: 414: 278: 7179:
Research Directions in Cognitive Science Volume 5: Artificial Intelligence
6895: 6744:
Processing OWL2 Ontologies using Thea: An Application of Logic Programming
6292: 6081: 5708: 1235:
Iterative algorithms can be implemented by means of recursive predicates.
185: 168: 9683: 9380: 9375: 9370: 8954: 8871: 7843: 6414:"Reasoning about Prolog programs: From modes through types to assertions" 4606:
The application of the theorem-prover treats such clauses as procedures:
4589: 4537: 4226: 4199: 3977: 3945: 3845: 3036: 2503:, in which unit (module) loading and unloading can be made dynamically. 677: 518: 457: 434: 426: 133: 7215: 6851: 6046: 6029: 5963: 5435:
ISO/IEC 13211: Information technology – Programming languages – Prolog.
5229:; Wielemaker, Jan; Price, Simon (2011). "Coding guidelines for Prolog". 5184:
ISO/IEC 13211-1:1995 Prolog, 6.3.7 Terms - double quoted list notation.
4497: 4464:
parser generator that can be used for adding special purpose extensions.
2965:
This interpreter uses a table of built-in Prolog predicates of the form
9673: 9578: 9285: 9260: 9024: 8979: 8715: 8372: 8185: 8078: 8073: 8068: 8028: 8003: 7878: 7634: 7381: 6596:. Lecture Notes in Computer Science. Vol. 2407. pp. 512–556. 6524: 6439: 6380:. Lecture Notes in Computer Science. Vol. 5366. pp. 693–697. 5486: 5129: 5100: 5013: 4788: 4684: 4417: 4387:
but the API specification can be made available for any implementation.
4234: 4191: 4167: 4143: 4116: 3833: 2570: 1607: 1602: 1545:
prefix operator is called the "not provable" operator, since the query
501: 259: 227: 7111:
ISO/IEC 13211: Information technology – Programming languages – Prolog
6724:"Using {Prolog} as the fundament for applications on the semantic web" 6367: 4814: 4296:
Frameworks exist which can bridge between Prolog and other languages:
2457: 9842: 9837: 9832: 9827: 9802: 9792: 9753: 9703: 9698: 9693: 9688: 9593: 9588: 9583: 9573: 9563: 9548: 9528: 9523: 9518: 9467: 9412: 9407: 9387: 9365: 9345: 9300: 9280: 9235: 9230: 9225: 9193: 9156: 9146: 9131: 9126: 9121: 9106: 9091: 9086: 9014: 9009: 9004: 8984: 8974: 8969: 8964: 8949: 8944: 8892: 8887: 8867: 8837: 8812: 8797: 8767: 8720: 8710: 8690: 8685: 8670: 8665: 8579: 8300: 8295: 8190: 7836: 7831: 7826: 7821: 7816: 7724: 7719: 7714: 7709: 7478: 6485: 5759: 5224: 4748: 3900: 2717:) that are easily read and inspected using built-in mechanisms (like 2499:. GNU Prolog initially diverted from ISO modules, opting instead for 1845: 1550: 538: 6756:
Loke, S. W.; Davison, A. (2001). "Secure Prolog-based mobile code".
6721: 9477: 9255: 8959: 8787: 8624: 8614: 8599: 8574: 8559: 8534: 8529: 8412: 8387: 8382: 8367: 8362: 8357: 8347: 8312: 8307: 8290: 8270: 8265: 8260: 8255: 8250: 8245: 8235: 8220: 8210: 8205: 8195: 8180: 8175: 8165: 8160: 8155: 8140: 8135: 8130: 8125: 8120: 8105: 8090: 8063: 8058: 8053: 8048: 8043: 8038: 8033: 8023: 8018: 7998: 7993: 7983: 7978: 7968: 7963: 7953: 7948: 7943: 7918: 7908: 7801: 7704: 7699: 7694: 7689: 7684: 7679: 7674: 7669: 7664: 6770: 6643: 4808: 4438: 4230: 4155: 3825: 2519:
module system. The latter two Prolog systems allow controlling the
2152: 1188:), and to generate both list skeletons and their lengths together ( 215: 31: 6492: 5923: 5245: 5155:"Natural Language Processing With Prolog in the IBM Watson System" 4178:. Also there are various concurrent Prolog programming languages. 2092:
is a general reusable solution to a commonly occurring problem in
1537:. If a proof for that goal can be found, the original goal (i.e., 513:, and language parsing applications. Because Prolog allows impure 9766: 9558: 9543: 9340: 9330: 9320: 9096: 8912: 8757: 8745: 7903: 7898: 7893: 7888: 7883: 7868: 7863: 7858: 7853: 7848: 7811: 7766: 7761: 7746: 7741: 7736: 7371: 7361: 7003: 4758: 4677: 4545: 4447:
is an implementation of ISO Prolog as a Java library (gnu.prolog)
4268: 4098: 4080: 4076: 3929: 3924:
Prolog is not purely declarative: because of constructs like the
3807: 2496: 2489: 1596:
Example of a basic query in a couple of popular Prolog dialects:
602: 346: 326: 322: 223: 7058:
Clause and Effect. Prolog Programming for the Working Programmer
6402: 4811:, that has the semantics of Prolog, but uses the syntax of Lisp. 4708:. A method for building knowledge-based system that uses Prolog. 4635:
Subsequent extensions of Prolog by the original team introduced
4305: 4301: 2709:
Since Prolog programs are themselves sequences of Prolog terms (
271: 9628: 9613: 9608: 9603: 9275: 9250: 9178: 9034: 9019: 8999: 8994: 8939: 8817: 8782: 8629: 8280: 8095: 7659: 7406: 7290: 6413: 4847:
of logic. An atom in a standard logic terminology means an
4667:
framework to provide distributed computing. Prolog is used for
4563:
European AI researchers favored Prolog while Americans favored
4471: 4110: 235: 7185:
and N. Bernsen, Lawrence Erlbaum Associates, pp 203–231, 1992.
7124:. Academic Press Inc. (London), 1985, 1987 (available under a 6407: 6405: 5690: 5585: 5201:
SICStus Prolog User's Manual 4.3: Core reference documentation
334: 9663: 9638: 9360: 9245: 9116: 8897: 8762: 8634: 8609: 8604: 8584: 7958: 7928: 7923: 7644: 7629: 7619: 7614: 7346: 7336: 7307: 7285: 6986:
Blackburn, Patrick; Bos, Johan; Striegnitz, Kristina (2006).
6577:
Colmerauer, Alain (1987). "Opening the Prolog III Universe".
6515:. Lecture Notes in Computer Science. Vol. 250. pp.  6030:"Performance and architectural evaluation of the PSI machine" 4676:." Prolog is being used in the Low-Code Development Platform 4524: 4423: 4363: 4314: 4084: 2453: 625: 621: 5997:
A Prolog processor based on a pattern matching memory device
4384: 4350: 267: 211: 9310: 9173: 9166: 8832: 8777: 8377: 7988: 7428: 6679: 6266: 5852:
Swift, T. (1999). "Tabling for non-monotonic programming".
4901:(4th ed.). Harlow, England; New York: Addison Wesley. 4781:. The ideas in Planner were later further developed in the 4652: 4477: 4380: 4335: 4206: 3888: 3712: 3708: 3569:
A simple example Turing machine is specified by the facts:
2533:
Prolog syntax and semantics § Definite clause grammars
1561:
now cannot be used to enumerate all things that are legal.
1549:
succeeds if Goal is not provable. This kind of negation is
251: 6062: 6027: 5953: 4397: 2452:
Higher-order programming style in Prolog was pioneered in
1848:
sorting algorithm, relating a list to its sorted version:
9797: 9487: 8539: 7463: 7433: 6028:
Taki, K.; Nakajima, K.; Nakashima, H.; Ikeda, M. (1987).
4791:
is a variant of Prolog for programming agent behavior in
4573: 4413: 4354: 4210: 3936:
order, rather than as purely declarative logic programs.
3829: 2512: 1165:
has three clauses, all of which are facts, and predicate
342: 338: 274: 263: 247: 6175: 6060: 5610: 6460: 6201:
Portability of Prolog programs: theory and case-studies
4839:. A term of Prolog is (depending on the context) a 4357:) allows both the extension and embedding of Prolog in 521:
of certain special predicates may have some deliberate
6985: 4872:
Clocksin, William F.; Mellish, Christopher S. (2003).
4584:
Pure Prolog was originally restricted to the use of a
3794:
provide fast indexing across the full query and head.
1184:), and to generate a list skeleton of a given length ( 497:. Given a query, the Prolog engine attempts to find a 255: 6068:
ACM Transactions on Programming Languages and Systems
5611:
Ed-Dbali, A.; Deransart, Pierre; Cervoni, L. (1996).
1588:
Here follow some example programs written in Prolog.
1468:
Notice that with the code as stated above, the query
7577: 6680:
Wielemaker, J.; Huang, Z.; Van Der Meij, L. (2008).
6665:
The family of concurrent logic programming languages
6592:
Wallace, M. (2002). "Constraint Logic Programming".
5498: 5496: 5275: 5152: 4714:. A fully declarative approach to logic programming. 4390: 3023:
and obtain a measure of certainty about the result.
5558:, Lecture Notes in Computer Science, vol. 1861 5157:. Association for Logic Programming. Archived from 4747:, formerly named PDC Prolog and Turbo Prolog, is a 4651:. Watson uses IBM's DeepQA software and the Apache 4620:Pure Prolog was soon extended, however, to include 3727:(WAM) instruction set. Some implementations employ 2564: 2323:to all corresponding positions in a pair of lists: 7197:The Art of Prolog: Advanced Programming Techniques 7091:Natural Language Processing for Prolog Programmers 6313: 5889:"Efficient Fixpoint Computation in Linear Tabling" 5588:The Art of Prolog: Advanced Programming Techniques 5568: 5553: 5036: 4924:Natural language processing for Prolog programmers 4571:(FGCS), which developed a variant of Prolog named 3964:programming abilities, plus interoperability with 1533:is evaluated as follows: Prolog attempts to prove 624:. An atom can be regarded as a compound term with 6872: 6594:Computational Logic: Logic Programming and Beyond 6063:"Parallel execution of prolog programs: a survey" 5854:Annals of Mathematics and Artificial Intelligence 5493: 5360:Logic programming: systematic program development 5336: 5303:Computational Logic: Logic Programming and Beyond 5278:Constructing Logic Programs, (Ed. J.M.J. Jacquet) 5178: 2702:unifies with clauses in the database of the form 464:, as well as its original intended field of use, 9878: 6506: 6226: 4624:, in which negative conditions of the form not(B 4291: 3031:Pure Prolog is based on a subset of first-order 27:Programming language that uses first order logic 6342: 5034: 4871: 4733:language is a strongly typed implementation of 1176:can be used to determine the length of a list ( 7115:International Organization for Standardization 7022:Prolog Programming for Artificial Intelligence 6923: 5806:Wise, Michael J.; Powers, David M. W. (1986). 5745: 5437:International Organization for Standardization 5186:International Organization for Standardization 4899:Prolog programming for artificial intelligence 4229:language. In addition, Visual Prolog supports 3980:but also for reasoning about Prolog programs. 3752:(TCO) for deterministic predicates exhibiting 3700:International Organization for Standardization 1465:enumerates all valid answers on backtracking. 1415:(parent_child(Z,sally), parent_child(Z,erica)) 99:Part 1: General core-Edition 1 (June 1995 7563: 7231: 7040:Programming in Prolog: Using the ISO Standard 7038:William F. Clocksin, Christopher S. Mellish: 6222: 6220: 5535: 5345:Representing Logic Program Schemata in Prolog 5342: 4835:The Prolog terminology differs from that of 3872: 6507:Roy, P.; Demoen, B.; Willems, Y. D. (1987). 6411: 6227:Kiselyov, Oleg; Kameyama, Yukiyoshi (2014). 6168: 6166: 5812:International Symposium on Logic Programming 5431: 5429: 5427: 5381: 5379: 4949: 4915: 4511: 2083: 425:language: the program is a set of facts and 6755: 5908: 5351: 5072: 4865: 4308:in other programming languages, including: 4225:(OWL). Prolog has also been suggested as a 2103: 9907:Programming languages with an ISO standard 7570: 7556: 7504: 7238: 7224: 6576: 6217: 5805: 5799: 5099: 5093: 4807:is a declarative language built on top of 4680:, which is focused around AI. Open source 2573:language and provides many facilities for 1569:In Prolog, loading code is referred to as 926: 7245: 6779: 6769: 6626:"XPCE: the SWI-Prolog native GUI library" 6561: 6491: 6429: 6282: 6163: 6131:. March 26, 1987. p. 34 – via 6080: 6045: 5922: 5586:Shapiro, Ehud Y.; Sterling, Leon (1994). 5485: 5475: 5424: 5395: 5376: 5285: 5244: 5225:Covington, Michael A.; Bagnara, Roberto; 5109:. Springer Science & Business Media. 5003: 4945: 4943: 4926:. Englewood Cliffs, N.J.: Prentice Hall. 4921: 4890: 4569:Fifth Generation Computer Systems project 3879:Fifth Generation Computer Systems project 2515:takes a different approach and offers an 1577:. If there is no solution, Prolog writes 1425:. This goal can be proved using the fact 1208:), and to split a given list into parts ( 112:Part 2: Modules-Edition 1 (June 2000 6929: 6828: 6822: 6758:Theory and Practice of Logic Programming 6689:Theory and Practice of Logic Programming 6550:"Constraint logic programming: a survey" 5994: 5911:Theory and Practice of Logic Programming 5886: 5581: 5579: 5464:Theory and Practice of Logic Programming 5300: 5232:Theory and Practice of Logic Programming 5197: 5153:Adam Lally; Paul Fodor (31 March 2011). 5148: 5146: 4501:Timeline of early developments in Prolog 4496: 4048:extends Prolog to include concepts from 2167:equal the sum of their proper divisors: 1713: 1564: 138:Untyped (its single data type is "term") 9887:Dynamically typed programming languages 6591: 6465:. Cambridge, Massachusetts: MIT Press. 6347:. Cambridge, Massachusetts: MIT Press. 6243: 6199:Jan Wielemaker and Vıtor Santos Costa: 5590:. Cambridge, Massachusetts: MIT Press. 5538:Lecture Notes in Artificia Intelligence 5456: 5454: 5357: 4987: 4735:concurrent constraint logic programming 4271:extends Prolog with frames/objects for 4213:. There are also extensions to support 3956:logic programming (OOLP), concurrency, 628:zero. An example of a compound term is 474: 14: 9897:Pattern matching programming languages 9879: 6831:"The early years of logic programming" 6547: 5824: 5818: 5613:Prolog: the standard: reference manual 5362:. Wokingham, England: Addison-Wesley. 5066: 4940: 4896: 3026: 1353:in the body of the second clause). 1230: 1196:can be used both to append two lists ( 9902:Programming languages created in 1972 7551: 7219: 6454: 6119:"Software that takes games seriously" 5887:Zhou, Neng-Fa; Sato, Taisuke (2003). 5851: 5697: 5665: 5647: 5629: 5576: 5502: 5385: 5143: 4876:. Berlin; New York: Springer-Verlag. 4186:Some Prolog implementations, notably 4071: 2698:represents an empty conjunction, and 733:Clauses with empty bodies are called 6873:Colmerauer, A.; Roussel, P. (1993). 5780: 5730:"An abstract Prolog instruction set" 5683: 5451: 5136:Prolog and Natural Language Analysis 5076:Foundations of Programming Languages 4723: 4701:Comparison of Prolog implementations 4639:abilities into the implementations. 4548:by Gerard Battani and Henri Meloni. 3689:Comparison of Prolog implementations 421:, Prolog is intended primarily as a 4777:In some ways Prolog is a subset of 4353:Application Programming Interface ( 3015:. Given those, it can be called as 2541:There is a special notation called 2523:in addition to that of predicates. 791:Given the above fact, one can ask: 24: 9912:Prolog programming language family 6978: 6412:Apt, K. R.; Marchiori, E. (1994). 5305:. Vol. 2407. pp. 17–26. 4642: 4181: 2315:As another example, the predicate 671: 25: 9928: 5673:"ISO/IEC 13211-1:1995/Cor 3:2017" 5655:"ISO/IEC 13211-1:1995/Cor 2:2012" 5637:"ISO/IEC 13211-1:1995/Cor 1:2007" 5039:Building expert systems in Prolog 4718:Association for Logic Programming 4528:). It was created around 1972 by 4468:A Warren Abstract Machine for PHP 4457:, Java, and relational databases. 3743: 3682: 2553:is expanded by the preprocessor ( 1169:has two clauses, both are rules. 756:which is equivalent to the rule: 636:Special cases of compound terms: 394:language that has its origins in 9917:Homoiconic programming languages 9861: 9860: 7532: 7531: 7503: 7034:Book supplements and source code 6554:The Journal of Logic Programming 6250:Association of Logic Programming 5827:The Journal of Logic Programming 5509:Association of Logic Programming 4976:Logic programming § History 4952:Foundations of logic programming 4536:'s procedural interpretation of 4532:with Philippe Roussel, based on 4474:work in Java which can be found 4205:with support for web protocols, 3760: 3013:clause_cf(Head, Body, Certainty) 2565:Meta-interpreters and reflection 371: 6952: 6930:Pountain, Dick (October 1984). 6902: 6866: 6813: 6804: 6749: 6737: 6715: 6673: 6657: 6636: 6618: 6585: 6570: 6541: 6500: 6479: 6361: 6336: 6307: 6260: 6237: 6193: 6139: 6111: 6097: 6054: 6021: 5988: 5947: 5902: 5880: 5845: 5774: 5739: 5736:, Menlo Park, CA, October 1983. 5722: 5705:"X3J17 and the Prolog Standard" 5604: 5562: 5547: 5529: 5442: 5404: 5327: 5294: 5269: 5218: 5191: 5123: 5073:Kent D. Lee (19 January 2015). 4829: 3732:implementations. These include 1227:displays a term on the screen. 854:Clauses with bodies are called 293: 7074:, Donald Nute, Andre Vellino, 6105:"Statically Allocated Systems" 5556:A new module system for Prolog 5198:Carlsson, Mats (27 May 2014). 5057: 5028: 4991:Journal of Automated Reasoning 4981: 4968: 4922:Covington, Michael A. (1994). 4659:, and Prolog, and runs on the 4240: 4219:Resource Description Framework 4161: 4138:Prolog systems that provide a 4040: 3718: 2437:is equivalent to applying the 1591: 1480:The built-in Prolog predicate 13: 1: 5554:Cabeza; Hermenegildo (2000), 5343:Gegg-harrison, T. S. (1995). 4858: 4783:Scientific Community Metaphor 4609:to show/solve H, show/solve B 4552:took this interpreter to the 4292:Interfaces to other languages 4166:Prolog-MPI is an open-source 3939: 3883:field programmable gate array 3802:Some Prolog systems, such as 3693: 532: 7105:Prolog for Computer Sciences 6563:10.1016/0743-1066(94)90033-7 6461:O'Keefe, Richard A. (1990). 6386:10.1007/978-3-540-89982-2_59 6330:10.1016/0004-3702(84)90017-1 5839:10.1016/0743-1066(91)90004-9 5503:Moura, Paulo (August 2004), 5133:; Stuart M. Shieber (2005). 4661:SUSE Linux Enterprise Server 4637:constraint logic programming 4121:Logic Programming Associates 4056:It is suited to large-scale 4046:Constraint logic programming 3950:constraint logic programming 3738:stack-based virtual machines 2501:Contextual Logic Programming 2433:with a single unique value, 2421:is a predicate that for all 1839: 1356: 892:If we add that rule and ask 7: 9892:Logic programming languages 7173:Robert Smith, John Gibson, 7076:Prolog Programming in Depth 7042:. Springer, 5th ed., 2003, 6418:Formal Aspects of Computing 6246:"Declarative vs procedural" 5079:. Springer. pp. 298–. 5043:. Berlin: Springer-Verlag. 4954:. Berlin: Springer-Verlag. 4694: 4385:Amzi! Prolog + Logic Server 4133: 3987: 3011:and clauses represented as 2545:(DCGs). A rule defined via 2480:have decided to support as 1475: 858:. An example of a rule is: 737:. An example of a fact is: 493:. Relations are defined by 481:Prolog syntax and semantics 466:natural language processing 114:; 24 years ago 101:; 29 years ago 76:; 52 years ago 10: 9933: 6376:; Enrico Pontelli (eds.). 6345:Types in logic programming 6205:CICLOPS-WLPE Workshop 2010 4706:Logico-linguistic modeling 4663:11 operating system using 4492: 4453:provides interfaces to C, 4058:combinatorial optimisation 3873:Implementation in hardware 3817: 3813: 3797: 3764: 3686: 2530: 2526: 2463: 2107: 943:to refer to predicates. A 478: 437:is initiated by running a 29: 9856: 9780: 9506: 8658: 7607: 7589: 7499: 7276: 7253: 7103:M. S. Dawe and C.M.Dawe, 6910:"Prolog: a brief history" 6839:Communications of the ACM 6790:10.1017/S1471068401001211 6701:10.1017/S1471068407003237 6129:Reed Business Information 5933:10.1017/S1471068411000500 5477:10.1017/S1471068422000102 5448:ISO/IEC 13211-2: Modules. 5255:10.1017/S1471068411000391 5214:– via Google Books. 5204:. BoD – Books on Demand. 4410:graphical user interfaces 4176:Message Passing Interface 3906: 2084:Design patterns of Prolog 1470:?- sibling(sally, sally). 404:computational linguistics 400:automated theorem proving 368: 317: 312: 305: 300: 292: 285: 210: 202: 162: 142: 132: 128: 92: 88: 70: 58: 46: 36:Prologue (disambiguation) 6992:. College Publications. 6964:, TerminusDB, 2020-12-13 6829:Kowalski, R. A. (1988). 6682:"SWI-Prolog and the web" 6602:10.1007/3-540-45628-7_19 6374:María García de la Banda 6343:Pfenning, Frank (1992). 6244:Franzen, Torkel (1994), 6005:10.1007/3-540-16492-8_73 5691:"ISO/IEC JTC1 SC22 WG17" 5311:10.1007/3-540-45628-7_15 5035:Merritt, Dennis (1989). 4822: 4647:Prolog has been used in 4513:programmation en logique 4273:knowledge representation 4262: 4054:A(X,Y) :- X+Y>0. 3983: 3971: 3914:Programming in the large 3820:Tabled logic programming 3650: 3571: 3045: 2967: 2723: 2587: 2585:) for pure Prolog code: 2543:definite clause grammars 2470:programming in the large 2325: 2169: 2114:Higher-order programming 2104:Higher-order programming 2098:higher-order programming 1850: 1810: 1724: 1659: 1614: 1498: 1439: 1435:parent_child(tom, erica) 1427:father_child(tom, sally) 1380: 1248: 949: 897: 894:what things are mortals? 860: 825: 798: 758: 739: 682: 417:, and unlike many other 409:Prolog has its roots in 7107:, Springer Verlag 1992. 6317:Artificial Intelligence 5866:10.1023/A:1018990308362 5388:University of Melbourne 5301:Sterling, Leon (2002). 4558:Warren Abstract Machine 4554:University of Edinburgh 4433:declarative programming 4302:LPA Intelligence Server 4050:constraint satisfaction 3729:abstract interpretation 3725:Warren Abstract Machine 2579:meta-circular evaluator 2537:Definite clause grammar 1198:append(ListA, ListB, X) 927:Predicates and programs 822:what things are humans? 784:The built-in predicate 423:declarative programming 396:artificial intelligence 7122:Prolog for Programmers 7089:Michael A. Covington, 6370:"Towards Typed Prolog" 5995:Robinson, Ian (1986). 5732:. Technical Note 309, 5358:Deville, Yves (1990). 5131:Fernando C. N. Pereira 4712:Answer set programming 4512: 4502: 4306:LPA Prolog for Windows 4037:accelerate execution. 3960:(LLP), functional and 3863: 3824:Some Prolog systems, ( 3750:tail call optimization 3017:solve(Goal, Certainty) 2575:reflective programming 2447:Ys = map(Function, Xs) 2443:functional programming 1804:or equivalently using 1674:'Hello World!' 1626:'Hello World!' 1423:father_child(Z, sally) 1419:parent_child(Z, sally) 630:person_friends(zelda,) 527:imperative programming 34:. For other uses, see 7247:Programming languages 7139:/prologforprogrammers 7056:William F. Clocksin: 6961:terminusdb/terminusdb 6896:10.1145/155360.155362 6875:"The birth of Prolog" 6668:ACM Computing Surveys 6293:10.1145/502807.502810 6270:ACM Computing Surveys 6082:10.1145/504083.504085 4950:Lloyd, J. W. (1984). 4897:Bratko, Ivan (2012). 4874:Programming in Prolog 4500: 4223:Web Ontology Language 4172:distributed computing 4062:production scheduling 3858: 3687:Further information: 1714:Compiler optimization 1565:Programming in Prolog 1411:sibling(sally, erica) 665:"to be, or not to be" 419:programming languages 7072:Michael A. Covington 5781:Graf, Peter (1995). 5728:David H. D. Warren. 5615:. Berlin: Springer. 4588:theorem prover with 4093:defeasible reasoning 2484:module standard the 2472:, Prolog provides a 2319:applies a predicate 1492:reasoning. The goal 937:procedure definition 795:is socrates a human? 710:(meaning an arity 2 511:symbolic mathematics 475:Syntax and semantics 7160:The Craft of Prolog 6883:ACM SIGPLAN Notices 6852:10.1145/35043.35046 6548:Jaffar, J. (1994). 6463:The craft of Prolog 6047:10.1145/36205.36195 6034:ACM SIGPLAN Notices 5964:10.1145/30350.30362 5814:. pp. 203–210. 5515:(3), archived from 5227:O'Keefe, Richard A. 5161:on 3 September 2014 4793:multi-agent systems 4622:negation as failure 4472:Stephan Buettcher's 4445:GNU Prolog for Java 3854:space–time tradeoff 3785:field-encoded words 3734:clause binarization 3027:Turing completeness 2521:visibility of terms 2119:predicates such as 1831:optimization_pass_3 1825:optimization_pass_2 1819:optimization_pass_1 1784:optimization_pass_3 1766:optimization_pass_2 1748:optimization_pass_1 1720:optimizing compiler 1553:if its argument is 1488:, which allows for 1486:negation as failure 1231:Loops and recursion 545:. Terms are either 507:logical consequence 144:Filename extensions 71:First appeared 43: 7583:by standard number 7060:. Springer, 2003, 6556:. 19–20: 503–581. 6525:10.1007/BFb0014976 6440:10.1007/BF01213601 6230:Re-thinking Prolog 6210:2010-07-16 at the 6151:www.britannica.com 5103:(21 August 2003). 5014:10.1007/BF00297245 4550:David H. D. Warren 4503: 4251:2010-10-19 at the 4072:Object-orientation 3962:higher-order logic 3934:depth-first search 3704:technical standard 2700:clause(Head, Body) 2435:maplist(P, Xs, Ys) 2161:list comprehension 2110:Higher-order logic 1210:append(X, Y, List) 462:automated planning 441:over the program. 296:, Edinburgh Prolog 41: 9874: 9873: 7597:ISO romanizations 7545: 7544: 7527:Non-English-based 7099:978-0-13-629213-5 7066:978-3-540-62971-9 7048:978-3-540-00678-7 7030:978-0-321-41746-6 7024:, 4th ed., 2012, 6999:978-1-904987-17-8 6989:Learn Prolog Now! 6670:. September 1989. 6611:978-3-540-45628-5 6534:978-3-540-17611-4 6472:978-0-262-15039-2 6395:978-3-540-89982-2 6354:978-0-262-16131-2 6014:978-3-540-16492-0 5973:978-0-8186-0776-9 5792:978-3-540-61040-3 5734:SRI International 5622:978-3-540-59304-1 5597:978-0-262-19338-2 5369:978-0-201-17576-9 5320:978-3-540-43959-2 5211:978-3-7357-3744-1 5173:Watson (computer) 5116:978-3-540-40174-2 5086:978-3-319-13314-0 5050:978-0-387-97016-5 4961:978-3-540-13299-8 4933:978-0-13-629213-5 4908:978-0-321-41746-6 4883:978-3-540-00678-7 4737:. It is built on 4724:Related languages 4304:allows embedding 4279:Transaction logic 4119:was developed by 4089:Transaction logic 4083:and incorporates 4034: 4033: 3897:Japanese language 2704:Head :- Body 1813:program_optimized 1727:program_optimized 1708: 1707: 1429:, so the binding 411:first-order logic 392:logic programming 385: 384: 134:Typing discipline 16:(Redirected from 9924: 9864: 9863: 7584: 7572: 7565: 7558: 7549: 7548: 7535: 7534: 7507: 7506: 7240: 7233: 7226: 7217: 7216: 7143: 7140: 7138: 7136: 7134: 7132: 7126:Creative Commons 7014: 7012: 7011: 7002:. Archived from 6972: 6971: 6970: 6969: 6956: 6950: 6949: 6947: 6945: 6927: 6921: 6920: 6918: 6916: 6906: 6900: 6899: 6879: 6870: 6864: 6863: 6835: 6826: 6820: 6817: 6811: 6808: 6802: 6801: 6783: 6773: 6753: 6747: 6741: 6735: 6734: 6728: 6719: 6713: 6712: 6686: 6677: 6671: 6661: 6655: 6654: 6652: 6651: 6640: 6634: 6633: 6622: 6616: 6615: 6589: 6583: 6582: 6574: 6568: 6567: 6565: 6545: 6539: 6538: 6504: 6498: 6497: 6495: 6483: 6477: 6476: 6458: 6452: 6451: 6433: 6409: 6400: 6399: 6365: 6359: 6358: 6340: 6334: 6333: 6311: 6305: 6304: 6286: 6264: 6258: 6257: 6241: 6235: 6234: 6224: 6215: 6197: 6191: 6190: 6179: 6173: 6170: 6161: 6160: 6158: 6157: 6143: 6137: 6136: 6115: 6109: 6108: 6101: 6095: 6094: 6084: 6058: 6052: 6051: 6049: 6025: 6019: 6018: 5992: 5986: 5985: 5951: 5945: 5944: 5926: 5917:(1–2): 157–187. 5906: 5900: 5899: 5893: 5884: 5878: 5877: 5860:(3/4): 201–240. 5849: 5843: 5842: 5822: 5816: 5815: 5803: 5797: 5796: 5778: 5772: 5771: 5760:10.1109/2.108055 5743: 5737: 5726: 5720: 5719: 5717: 5716: 5707:. Archived from 5701: 5695: 5694: 5687: 5681: 5680: 5669: 5663: 5662: 5651: 5645: 5644: 5633: 5627: 5626: 5608: 5602: 5601: 5583: 5574: 5573: 5566: 5560: 5559: 5551: 5545: 5544: 5533: 5527: 5526: 5525: 5524: 5500: 5491: 5490: 5489: 5479: 5458: 5449: 5446: 5440: 5433: 5422: 5421: 5419: 5418: 5408: 5402: 5401: 5399: 5383: 5374: 5373: 5355: 5349: 5348: 5340: 5334: 5331: 5325: 5324: 5298: 5292: 5291: 5289: 5273: 5267: 5266: 5248: 5222: 5216: 5215: 5195: 5189: 5182: 5176: 5170: 5168: 5166: 5150: 5141: 5140: 5127: 5121: 5120: 5097: 5091: 5090: 5070: 5064: 5061: 5055: 5054: 5042: 5032: 5026: 5025: 5007: 4985: 4979: 4972: 4966: 4965: 4947: 4938: 4937: 4919: 4913: 4912: 4894: 4888: 4887: 4869: 4852: 4833: 4689:knowledge graphs 4669:pattern matching 4658: 4579:operating system 4530:Alain Colmerauer 4515: 4456: 4400:, a programming 4366: 4317: 4217:formats such as 4140:graphics library 4066:rational numbers 4055: 4027: 4019: 4014: 4006: 4001: 3988: 3893:natural language 3675: 3672: 3669: 3666: 3663: 3660: 3657: 3654: 3644: 3641: 3638: 3635: 3632: 3629: 3626: 3623: 3620: 3617: 3614: 3611: 3608: 3605: 3602: 3599: 3596: 3593: 3590: 3587: 3584: 3581: 3578: 3575: 3565: 3562: 3559: 3556: 3553: 3550: 3547: 3544: 3541: 3538: 3535: 3532: 3529: 3526: 3523: 3520: 3517: 3514: 3511: 3508: 3505: 3502: 3499: 3496: 3493: 3490: 3487: 3484: 3481: 3478: 3475: 3472: 3469: 3466: 3463: 3460: 3457: 3454: 3451: 3448: 3445: 3442: 3439: 3436: 3433: 3430: 3427: 3424: 3421: 3418: 3415: 3412: 3409: 3406: 3403: 3400: 3397: 3394: 3391: 3388: 3385: 3382: 3379: 3376: 3373: 3370: 3367: 3364: 3361: 3358: 3355: 3352: 3349: 3346: 3343: 3340: 3337: 3334: 3331: 3328: 3325: 3322: 3319: 3316: 3313: 3310: 3307: 3304: 3301: 3298: 3295: 3292: 3289: 3286: 3283: 3280: 3277: 3274: 3271: 3268: 3265: 3262: 3259: 3256: 3253: 3250: 3247: 3244: 3241: 3238: 3235: 3232: 3229: 3226: 3223: 3220: 3217: 3214: 3211: 3208: 3205: 3202: 3199: 3196: 3193: 3190: 3187: 3184: 3181: 3178: 3175: 3172: 3169: 3166: 3163: 3160: 3157: 3154: 3151: 3148: 3145: 3142: 3139: 3136: 3133: 3130: 3127: 3124: 3121: 3118: 3115: 3112: 3109: 3106: 3103: 3100: 3097: 3094: 3091: 3088: 3085: 3082: 3079: 3076: 3073: 3070: 3067: 3064: 3061: 3058: 3055: 3052: 3049: 3022: 3018: 3014: 3007: 3004: 3001: 2998: 2995: 2992: 2989: 2986: 2983: 2980: 2977: 2974: 2971: 2961: 2958: 2955: 2952: 2949: 2946: 2943: 2940: 2937: 2934: 2931: 2928: 2925: 2922: 2919: 2916: 2913: 2910: 2907: 2904: 2901: 2898: 2895: 2892: 2889: 2886: 2883: 2880: 2877: 2874: 2871: 2868: 2865: 2862: 2859: 2856: 2853: 2850: 2847: 2844: 2841: 2838: 2835: 2832: 2829: 2826: 2823: 2820: 2817: 2814: 2811: 2808: 2805: 2802: 2799: 2796: 2793: 2790: 2787: 2784: 2781: 2778: 2775: 2772: 2769: 2766: 2763: 2760: 2757: 2754: 2751: 2748: 2745: 2742: 2739: 2736: 2733: 2730: 2727: 2720: 2712: 2705: 2701: 2697: 2690: 2687: 2684: 2681: 2678: 2675: 2672: 2669: 2666: 2663: 2660: 2657: 2654: 2651: 2648: 2645: 2642: 2639: 2636: 2633: 2630: 2627: 2624: 2621: 2618: 2615: 2612: 2609: 2606: 2603: 2600: 2597: 2594: 2591: 2583:meta-interpreter 2556: 2552: 2548: 2448: 2436: 2432: 2428: 2424: 2420: 2413: 2410: 2407: 2404: 2401: 2398: 2395: 2392: 2389: 2386: 2383: 2380: 2377: 2374: 2371: 2368: 2365: 2362: 2359: 2356: 2353: 2350: 2347: 2344: 2341: 2338: 2335: 2332: 2329: 2322: 2318: 2308: 2305: 2302: 2299: 2296: 2293: 2290: 2287: 2284: 2281: 2278: 2275: 2272: 2269: 2266: 2263: 2260: 2257: 2254: 2251: 2248: 2245: 2242: 2239: 2236: 2233: 2230: 2227: 2224: 2221: 2218: 2215: 2212: 2209: 2206: 2203: 2200: 2197: 2194: 2191: 2188: 2185: 2182: 2179: 2176: 2173: 2150: 2146: 2142: 2138: 2134: 2130: 2126: 2122: 2079: 2076: 2073: 2070: 2067: 2064: 2061: 2058: 2055: 2052: 2049: 2046: 2043: 2040: 2037: 2034: 2031: 2028: 2025: 2022: 2019: 2016: 2013: 2010: 2007: 2004: 2001: 1998: 1995: 1992: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1965: 1962: 1959: 1956: 1953: 1950: 1947: 1944: 1941: 1938: 1935: 1932: 1929: 1926: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1902: 1899: 1896: 1893: 1890: 1887: 1884: 1881: 1878: 1875: 1872: 1869: 1866: 1863: 1860: 1857: 1854: 1835: 1832: 1829: 1826: 1823: 1820: 1817: 1814: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1773: 1770: 1767: 1764: 1761: 1758: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1702: 1699: 1696: 1693: 1690: 1687: 1684: 1681: 1678: 1675: 1672: 1669: 1666: 1663: 1654: 1651: 1648: 1645: 1642: 1639: 1636: 1633: 1630: 1627: 1624: 1621: 1618: 1599: 1598: 1584: 1580: 1576: 1560: 1548: 1544: 1540: 1536: 1529: 1526: 1523: 1520: 1517: 1514: 1511: 1508: 1505: 1502: 1495: 1483: 1471: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1436: 1432: 1428: 1424: 1420: 1416: 1412: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1352: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1324: 1321: 1318: 1315: 1312: 1309: 1306: 1303: 1300: 1297: 1294: 1291: 1288: 1285: 1282: 1279: 1276: 1273: 1270: 1267: 1264: 1261: 1258: 1255: 1252: 1241: 1226: 1215: 1211: 1207: 1203: 1199: 1195: 1191: 1187: 1183: 1179: 1175: 1168: 1164: 1157: 1154: 1151: 1148: 1145: 1142: 1139: 1136: 1133: 1130: 1127: 1124: 1121: 1118: 1115: 1112: 1109: 1106: 1103: 1100: 1097: 1094: 1091: 1088: 1085: 1082: 1079: 1076: 1073: 1070: 1067: 1064: 1061: 1058: 1055: 1052: 1049: 1046: 1043: 1040: 1037: 1034: 1031: 1028: 1025: 1022: 1019: 1016: 1013: 1010: 1007: 1004: 1001: 998: 995: 992: 989: 986: 983: 980: 977: 974: 971: 968: 965: 962: 959: 956: 953: 922: 919: 916: 913: 910: 907: 904: 901: 888: 885: 882: 879: 876: 873: 870: 867: 864: 850: 847: 844: 841: 838: 835: 832: 829: 817: 814: 811: 808: 805: 802: 788:is always true. 787: 780: 777: 774: 771: 768: 765: 762: 752: 749: 746: 743: 725: 717: 709: 705:logical operator 695: 692: 689: 686: 666: 662: 652: 649: 646: 631: 590: 586: 582: 578: 574: 537:Prolog's single 375: 198: 195: 193: 191: 189: 187: 181: 178: 176: 174: 172: 170: 158: 154: 150: 122: 120: 115: 109: 107: 102: 84: 82: 77: 65:Alain Colmerauer 60:Designed by 44: 40: 21: 9932: 9931: 9927: 9926: 9925: 9923: 9922: 9921: 9877: 9876: 9875: 9870: 9852: 9776: 9502: 8654: 7603: 7585: 7582: 7576: 7546: 7541: 7495: 7272: 7249: 7244: 7214: 7156:Richard O'Keefe 7129: 7009: 7007: 7000: 6981: 6979:Further reading 6976: 6975: 6967: 6965: 6958: 6957: 6953: 6943: 6941: 6928: 6924: 6914: 6912: 6908: 6907: 6903: 6877: 6871: 6867: 6833: 6827: 6823: 6818: 6814: 6809: 6805: 6754: 6750: 6742: 6738: 6726: 6720: 6716: 6684: 6678: 6674: 6662: 6658: 6649: 6647: 6646:. Apps.lumii.lv 6642: 6641: 6637: 6624: 6623: 6619: 6612: 6590: 6586: 6575: 6571: 6546: 6542: 6535: 6505: 6501: 6484: 6480: 6473: 6459: 6455: 6410: 6403: 6396: 6366: 6362: 6355: 6341: 6337: 6312: 6308: 6284:10.1.1.616.6372 6265: 6261: 6242: 6238: 6225: 6218: 6212:Wayback Machine 6198: 6194: 6181: 6180: 6176: 6171: 6164: 6155: 6153: 6145: 6144: 6140: 6117: 6116: 6112: 6103: 6102: 6098: 6059: 6055: 6026: 6022: 6015: 5993: 5989: 5974: 5958:. p. 100. 5952: 5948: 5907: 5903: 5891: 5885: 5881: 5850: 5846: 5823: 5819: 5804: 5800: 5793: 5779: 5775: 5744: 5740: 5727: 5723: 5714: 5712: 5703: 5702: 5698: 5689: 5688: 5684: 5671: 5670: 5666: 5653: 5652: 5648: 5635: 5634: 5630: 5623: 5609: 5605: 5598: 5584: 5577: 5567: 5563: 5552: 5548: 5534: 5530: 5522: 5520: 5501: 5494: 5459: 5452: 5447: 5443: 5434: 5425: 5416: 5414: 5410: 5409: 5405: 5384: 5377: 5370: 5356: 5352: 5341: 5337: 5332: 5328: 5321: 5299: 5295: 5274: 5270: 5223: 5219: 5212: 5196: 5192: 5183: 5179: 5164: 5162: 5151: 5144: 5128: 5124: 5117: 5098: 5094: 5087: 5071: 5067: 5062: 5058: 5051: 5033: 5029: 4986: 4982: 4973: 4969: 4962: 4948: 4941: 4934: 4920: 4916: 4909: 4895: 4891: 4884: 4870: 4866: 4861: 4856: 4855: 4834: 4830: 4825: 4763:Turing-complete 4752:object-oriented 4726: 4697: 4656: 4645: 4643:Use in industry 4631: 4627: 4618: 4616: 4612: 4604: 4602: 4598: 4574:Kernel Language 4542:Robert Kowalski 4534:Robert Kowalski 4523:programming in 4495: 4454: 4404:bridge between 4362: 4313: 4294: 4265: 4253:Wayback Machine 4243: 4203:web programming 4184: 4182:Web programming 4164: 4136: 4074: 4053: 4043: 4025: 4017: 4012: 4004: 3999: 3994:Interpretation 3991:Mode specifier 3986: 3974: 3966:knowledge bases 3954:object-oriented 3942: 3909: 3895:inputs, in the 3875: 3844:), implement a 3822: 3816: 3800: 3781:sub-linear-time 3769: 3763: 3746: 3721: 3696: 3691: 3685: 3677: 3676: 3673: 3670: 3667: 3664: 3661: 3658: 3655: 3652: 3646: 3645: 3642: 3639: 3636: 3633: 3630: 3627: 3624: 3621: 3618: 3615: 3612: 3609: 3606: 3603: 3600: 3597: 3594: 3591: 3588: 3585: 3582: 3579: 3576: 3573: 3567: 3566: 3563: 3560: 3557: 3554: 3551: 3548: 3545: 3542: 3539: 3536: 3533: 3530: 3527: 3524: 3521: 3518: 3515: 3512: 3509: 3506: 3503: 3500: 3497: 3494: 3491: 3488: 3485: 3482: 3479: 3476: 3473: 3470: 3467: 3464: 3461: 3458: 3455: 3452: 3449: 3446: 3443: 3440: 3437: 3434: 3431: 3428: 3425: 3422: 3419: 3416: 3413: 3410: 3407: 3404: 3401: 3398: 3395: 3392: 3389: 3386: 3383: 3380: 3377: 3374: 3371: 3368: 3365: 3362: 3359: 3356: 3353: 3350: 3347: 3344: 3341: 3338: 3335: 3332: 3329: 3326: 3323: 3320: 3317: 3314: 3311: 3308: 3305: 3302: 3299: 3296: 3293: 3290: 3287: 3284: 3281: 3278: 3275: 3272: 3269: 3266: 3263: 3260: 3257: 3254: 3251: 3248: 3245: 3242: 3239: 3236: 3233: 3230: 3227: 3224: 3221: 3218: 3215: 3212: 3209: 3206: 3203: 3200: 3197: 3194: 3191: 3188: 3185: 3182: 3179: 3176: 3173: 3170: 3167: 3164: 3161: 3158: 3155: 3152: 3149: 3146: 3143: 3140: 3137: 3134: 3131: 3128: 3125: 3122: 3119: 3116: 3113: 3110: 3107: 3104: 3101: 3098: 3095: 3092: 3089: 3086: 3083: 3080: 3077: 3074: 3071: 3068: 3065: 3062: 3059: 3056: 3053: 3050: 3047: 3041:Turing-complete 3033:predicate logic 3029: 3020: 3016: 3012: 3009: 3008: 3005: 3002: 2999: 2996: 2993: 2990: 2987: 2984: 2981: 2978: 2975: 2972: 2969: 2963: 2962: 2959: 2956: 2953: 2950: 2947: 2944: 2941: 2938: 2935: 2932: 2929: 2926: 2923: 2920: 2917: 2914: 2911: 2908: 2905: 2902: 2899: 2896: 2893: 2890: 2887: 2884: 2881: 2878: 2875: 2872: 2869: 2866: 2863: 2860: 2857: 2854: 2851: 2848: 2845: 2842: 2839: 2836: 2833: 2830: 2827: 2824: 2821: 2818: 2815: 2812: 2809: 2806: 2803: 2800: 2797: 2794: 2791: 2788: 2785: 2782: 2779: 2776: 2773: 2770: 2767: 2764: 2761: 2758: 2755: 2752: 2749: 2746: 2743: 2740: 2737: 2734: 2731: 2728: 2725: 2718: 2710: 2703: 2699: 2695: 2692: 2691: 2688: 2685: 2682: 2679: 2676: 2673: 2670: 2667: 2664: 2661: 2658: 2655: 2652: 2649: 2646: 2643: 2640: 2637: 2634: 2631: 2628: 2625: 2622: 2619: 2616: 2613: 2610: 2607: 2604: 2601: 2598: 2595: 2592: 2589: 2567: 2554: 2550: 2546: 2539: 2531:Main articles: 2529: 2466: 2446: 2434: 2430: 2426: 2422: 2418: 2415: 2414: 2411: 2408: 2405: 2402: 2399: 2396: 2393: 2390: 2387: 2384: 2381: 2378: 2375: 2372: 2369: 2366: 2363: 2360: 2357: 2354: 2351: 2348: 2345: 2342: 2339: 2336: 2333: 2330: 2327: 2320: 2316: 2310: 2309: 2306: 2303: 2300: 2297: 2294: 2291: 2288: 2285: 2282: 2279: 2276: 2273: 2270: 2267: 2264: 2261: 2258: 2255: 2252: 2249: 2246: 2243: 2240: 2237: 2234: 2231: 2228: 2225: 2222: 2219: 2216: 2213: 2210: 2207: 2204: 2201: 2198: 2195: 2192: 2189: 2186: 2183: 2180: 2177: 2174: 2171: 2165:perfect numbers 2163:. For example, 2148: 2144: 2140: 2136: 2132: 2128: 2124: 2120: 2116: 2108:Main articles: 2106: 2094:software design 2086: 2081: 2080: 2077: 2074: 2071: 2068: 2065: 2062: 2059: 2056: 2053: 2050: 2047: 2044: 2041: 2038: 2035: 2032: 2029: 2026: 2023: 2020: 2017: 2014: 2011: 2008: 2005: 2002: 1999: 1996: 1993: 1990: 1987: 1984: 1981: 1978: 1975: 1972: 1969: 1966: 1963: 1960: 1957: 1954: 1951: 1948: 1945: 1942: 1939: 1936: 1933: 1930: 1927: 1924: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1900: 1897: 1894: 1891: 1888: 1885: 1882: 1879: 1876: 1873: 1870: 1867: 1864: 1861: 1858: 1855: 1852: 1842: 1837: 1836: 1833: 1830: 1827: 1824: 1821: 1818: 1815: 1812: 1802: 1801: 1798: 1795: 1792: 1789: 1786: 1783: 1780: 1777: 1774: 1771: 1768: 1765: 1762: 1759: 1756: 1753: 1750: 1747: 1744: 1741: 1738: 1735: 1732: 1729: 1726: 1716: 1704: 1703: 1700: 1697: 1694: 1691: 1688: 1685: 1682: 1679: 1676: 1673: 1670: 1667: 1664: 1661: 1656: 1655: 1652: 1649: 1646: 1643: 1640: 1637: 1634: 1631: 1628: 1625: 1622: 1619: 1616: 1594: 1582: 1578: 1574: 1567: 1558: 1546: 1542: 1538: 1534: 1531: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1493: 1481: 1478: 1469: 1463: 1462: 1459: 1456: 1453: 1450: 1447: 1444: 1441: 1434: 1430: 1426: 1422: 1418: 1414: 1410: 1407: 1406: 1403: 1400: 1397: 1394: 1391: 1388: 1385: 1382: 1359: 1350: 1347: 1346: 1343: 1340: 1337: 1334: 1331: 1328: 1325: 1322: 1319: 1316: 1313: 1310: 1307: 1304: 1301: 1298: 1295: 1292: 1289: 1286: 1283: 1280: 1277: 1274: 1271: 1268: 1265: 1262: 1259: 1256: 1253: 1250: 1239: 1233: 1224: 1213: 1212:, given a list 1209: 1205: 1201: 1197: 1193: 1189: 1185: 1181: 1180:, given a list 1178:length(List, L) 1177: 1173: 1166: 1162: 1159: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 984: 981: 978: 975: 972: 969: 966: 963: 960: 957: 954: 951: 929: 924: 923: 920: 917: 914: 911: 908: 905: 902: 899: 890: 889: 886: 883: 880: 877: 874: 871: 868: 865: 862: 852: 851: 848: 845: 842: 839: 836: 833: 830: 827: 819: 818: 815: 812: 809: 806: 803: 800: 785: 782: 781: 778: 775: 772: 769: 766: 763: 760: 754: 753: 750: 747: 744: 741: 723: 715: 707: 703:. The built-in 697: 696: 693: 690: 687: 684: 674: 672:Rules and facts 664: 663:. For example, 660: 651: 648: 647:. For example, 645: 629: 588: 584: 580: 576: 572: 535: 517:, checking the 483: 477: 446:theorem proving 429:, which define 205:implementations 184: 182: 167: 156: 152: 148: 124: 118: 116: 113: 111: 105: 103: 100: 80: 78: 75: 39: 28: 23: 22: 15: 12: 11: 5: 9930: 9920: 9919: 9914: 9909: 9904: 9899: 9894: 9889: 9872: 9871: 9869: 9868: 9857: 9854: 9853: 9851: 9850: 9845: 9840: 9835: 9830: 9825: 9820: 9815: 9810: 9805: 9800: 9795: 9790: 9784: 9782: 9778: 9777: 9775: 9774: 9769: 9764: 9759: 9756: 9751: 9746: 9741: 9736: 9731: 9726: 9721: 9716: 9711: 9706: 9701: 9696: 9691: 9686: 9681: 9676: 9671: 9666: 9661: 9656: 9651: 9646: 9641: 9636: 9631: 9626: 9621: 9616: 9611: 9606: 9601: 9596: 9591: 9586: 9581: 9576: 9571: 9566: 9561: 9556: 9551: 9546: 9541: 9536: 9531: 9526: 9521: 9516: 9510: 9508: 9504: 9503: 9501: 9500: 9495: 9490: 9485: 9480: 9475: 9470: 9465: 9460: 9455: 9450: 9445: 9440: 9435: 9430: 9425: 9420: 9415: 9410: 9405: 9400: 9395: 9390: 9385: 9384: 9383: 9378: 9368: 9363: 9358: 9353: 9348: 9343: 9338: 9333: 9328: 9323: 9318: 9313: 9308: 9303: 9298: 9293: 9288: 9283: 9278: 9273: 9268: 9263: 9258: 9253: 9248: 9243: 9238: 9233: 9228: 9223: 9218: 9213: 9212: 9211: 9201: 9196: 9191: 9186: 9181: 9176: 9171: 9170: 9169: 9164: 9154: 9149: 9144: 9139: 9134: 9129: 9124: 9119: 9114: 9109: 9104: 9099: 9094: 9089: 9084: 9083: 9082: 9077: 9072: 9067: 9062: 9057: 9052: 9047: 9042: 9032: 9027: 9022: 9017: 9012: 9007: 9002: 8997: 8992: 8987: 8982: 8977: 8972: 8967: 8962: 8957: 8952: 8947: 8942: 8937: 8936: 8935: 8930: 8920: 8915: 8910: 8905: 8900: 8895: 8890: 8885: 8880: 8875: 8865: 8860: 8855: 8850: 8845: 8840: 8835: 8830: 8825: 8820: 8815: 8810: 8805: 8800: 8795: 8790: 8785: 8780: 8775: 8770: 8765: 8760: 8755: 8750: 8749: 8748: 8743: 8738: 8733: 8728: 8718: 8713: 8708: 8703: 8698: 8693: 8688: 8683: 8678: 8673: 8668: 8662: 8660: 8656: 8655: 8653: 8652: 8647: 8642: 8637: 8632: 8627: 8622: 8617: 8612: 8607: 8602: 8597: 8592: 8587: 8582: 8577: 8572: 8567: 8562: 8557: 8552: 8547: 8542: 8537: 8532: 8527: 8522: 8521: 8520: 8515: 8510: 8505: 8500: 8495: 8490: 8485: 8480: 8475: 8470: 8465: 8460: 8455: 8450: 8445: 8440: 8430: 8425: 8420: 8415: 8410: 8405: 8400: 8395: 8390: 8385: 8380: 8375: 8370: 8365: 8360: 8355: 8350: 8345: 8340: 8335: 8330: 8325: 8320: 8315: 8310: 8305: 8304: 8303: 8293: 8288: 8283: 8278: 8273: 8268: 8263: 8258: 8253: 8248: 8243: 8238: 8233: 8228: 8223: 8218: 8213: 8208: 8203: 8198: 8193: 8188: 8183: 8178: 8173: 8168: 8163: 8158: 8153: 8148: 8143: 8138: 8133: 8128: 8123: 8118: 8113: 8108: 8103: 8098: 8093: 8088: 8083: 8082: 8081: 8076: 8071: 8061: 8056: 8051: 8046: 8041: 8036: 8031: 8026: 8021: 8016: 8011: 8006: 8001: 7996: 7991: 7986: 7981: 7976: 7971: 7966: 7961: 7956: 7951: 7946: 7941: 7936: 7931: 7926: 7921: 7916: 7911: 7906: 7901: 7896: 7891: 7886: 7881: 7876: 7871: 7866: 7861: 7856: 7851: 7846: 7841: 7840: 7839: 7834: 7829: 7824: 7819: 7809: 7804: 7799: 7794: 7789: 7784: 7779: 7774: 7769: 7764: 7759: 7754: 7749: 7744: 7739: 7734: 7729: 7728: 7727: 7722: 7717: 7712: 7707: 7702: 7697: 7692: 7687: 7682: 7677: 7672: 7667: 7657: 7652: 7647: 7642: 7637: 7632: 7627: 7622: 7617: 7611: 7609: 7605: 7604: 7590: 7587: 7586: 7575: 7574: 7567: 7560: 7552: 7543: 7542: 7540: 7539: 7529: 7524: 7519: 7514: 7500: 7497: 7496: 7494: 7493: 7486: 7481: 7476: 7471: 7466: 7461: 7456: 7451: 7446: 7441: 7436: 7431: 7426: 7425: 7424: 7414: 7409: 7404: 7399: 7394: 7389: 7384: 7379: 7374: 7369: 7364: 7359: 7354: 7349: 7344: 7339: 7334: 7329: 7328: 7327: 7326: 7325: 7320: 7305: 7300: 7295: 7294: 7293: 7283: 7277: 7274: 7273: 7271: 7270: 7265: 7260: 7254: 7251: 7250: 7243: 7242: 7235: 7228: 7220: 7213: 7212: 7208: 7186: 7171: 7153: 7118: 7108: 7101: 7087: 7069: 7054: 7036: 7015: 6998: 6982: 6980: 6977: 6974: 6973: 6951: 6932:"POP and SNAP" 6922: 6901: 6865: 6821: 6812: 6803: 6781:10.1.1.58.6610 6748: 6736: 6714: 6672: 6663:Ehud Shapiro. 6656: 6635: 6630:swi-prolog.org 6617: 6610: 6584: 6569: 6540: 6533: 6499: 6478: 6471: 6453: 6401: 6394: 6360: 6353: 6335: 6306: 6277:(3): 374–425. 6259: 6236: 6216: 6192: 6174: 6162: 6138: 6110: 6096: 6053: 6020: 6013: 5987: 5972: 5946: 5901: 5879: 5844: 5817: 5798: 5791: 5773: 5738: 5721: 5696: 5682: 5664: 5646: 5628: 5621: 5603: 5596: 5575: 5561: 5546: 5528: 5492: 5470:(6): 776–858, 5450: 5441: 5423: 5403: 5397:10.1.1.35.4505 5375: 5368: 5350: 5335: 5326: 5319: 5293: 5287:10.1.1.56.7278 5268: 5239:(6): 889–927. 5217: 5210: 5190: 5177: 5142: 5122: 5115: 5092: 5085: 5065: 5056: 5049: 5027: 5005:10.1.1.47.3057 4998:(4): 353–380. 4980: 4967: 4960: 4939: 4932: 4914: 4907: 4889: 4882: 4863: 4862: 4860: 4857: 4854: 4853: 4849:atomic formula 4845:atomic formula 4827: 4826: 4824: 4821: 4820: 4819: 4812: 4802: 4796: 4786: 4775: 4772: 4766: 4756: 4749:strongly typed 4742: 4739:SICStus Prolog 4725: 4722: 4721: 4720: 4715: 4709: 4703: 4696: 4693: 4682:graph database 4674:expressiveness 4644: 4641: 4629: 4625: 4614: 4610: 4608: 4600: 4596: 4594: 4577:for its first 4494: 4491: 4490: 4489: 4482: 4475: 4465: 4458: 4448: 4442: 4436: 4421: 4395: 4388: 4347: 4293: 4290: 4289: 4288: 4282: 4276: 4264: 4261: 4242: 4239: 4183: 4180: 4170:extension for 4163: 4160: 4135: 4132: 4073: 4070: 4042: 4039: 4032: 4031: 4030:Not specified 4028: 4022: 4021: 4015: 4009: 4008: 4002: 3996: 3995: 3992: 3985: 3982: 3973: 3970: 3941: 3938: 3908: 3905: 3874: 3871: 3867:SLG resolution 3848:method called 3818:Main article: 3815: 3812: 3799: 3796: 3777:data structure 3765:Main article: 3762: 3759: 3754:tail recursion 3745: 3744:Tail recursion 3742: 3720: 3717: 3695: 3692: 3684: 3683:Implementation 3681: 3651: 3572: 3046: 3028: 3025: 2968: 2724: 2588: 2566: 2563: 2528: 2525: 2478:Prolog systems 2465: 2462: 2326: 2170: 2105: 2102: 2090:design pattern 2085: 2082: 1851: 1841: 1838: 1811: 1725: 1715: 1712: 1706: 1705: 1660: 1657: 1615: 1611: 1610: 1605: 1593: 1590: 1566: 1563: 1499: 1477: 1474: 1440: 1381: 1367:SLD resolution 1358: 1355: 1249: 1240:parent_child/2 1232: 1229: 1192:). Similarly, 1167:parent_child/2 1163:father_child/2 950: 928: 925: 898: 861: 826: 799: 759: 740: 722:of goals, and 683: 673: 670: 669: 668: 654: 634: 633: 613: 606: 592: 561:compound terms 534: 531: 479:Main article: 476: 473: 454:term rewriting 450:expert systems 383: 382: 381: 380: 366: 365: 315: 314: 310: 309: 303: 302: 298: 297: 290: 289: 283: 282: 244:Quintus Prolog 208: 207: 200: 199: 164: 160: 159: 146: 140: 139: 136: 130: 129: 126: 125: 98: 96: 94:Stable release 90: 89: 86: 85: 72: 68: 67: 62: 56: 55: 50: 26: 9: 6: 4: 3: 2: 9929: 9918: 9915: 9913: 9910: 9908: 9905: 9903: 9900: 9898: 9895: 9893: 9890: 9888: 9885: 9884: 9882: 9867: 9859: 9858: 9855: 9849: 9846: 9844: 9841: 9839: 9836: 9834: 9831: 9829: 9826: 9824: 9821: 9819: 9816: 9814: 9811: 9809: 9806: 9804: 9801: 9799: 9796: 9794: 9791: 9789: 9786: 9785: 9783: 9779: 9773: 9770: 9768: 9765: 9763: 9760: 9757: 9755: 9752: 9750: 9747: 9745: 9742: 9740: 9737: 9735: 9732: 9730: 9727: 9725: 9722: 9720: 9717: 9715: 9712: 9710: 9707: 9705: 9702: 9700: 9697: 9695: 9692: 9690: 9687: 9685: 9682: 9680: 9677: 9675: 9672: 9670: 9667: 9665: 9662: 9660: 9657: 9655: 9652: 9650: 9647: 9645: 9642: 9640: 9637: 9635: 9632: 9630: 9627: 9625: 9622: 9620: 9617: 9615: 9612: 9610: 9607: 9605: 9602: 9600: 9597: 9595: 9592: 9590: 9587: 9585: 9582: 9580: 9577: 9575: 9572: 9570: 9567: 9565: 9562: 9560: 9557: 9555: 9552: 9550: 9547: 9545: 9542: 9540: 9537: 9535: 9532: 9530: 9527: 9525: 9522: 9520: 9517: 9515: 9512: 9511: 9509: 9505: 9499: 9496: 9494: 9491: 9489: 9486: 9484: 9481: 9479: 9476: 9474: 9471: 9469: 9466: 9464: 9461: 9459: 9456: 9454: 9451: 9449: 9446: 9444: 9441: 9439: 9436: 9434: 9431: 9429: 9426: 9424: 9421: 9419: 9416: 9414: 9411: 9409: 9406: 9404: 9401: 9399: 9396: 9394: 9391: 9389: 9386: 9382: 9379: 9377: 9374: 9373: 9372: 9369: 9367: 9364: 9362: 9359: 9357: 9354: 9352: 9349: 9347: 9344: 9342: 9339: 9337: 9334: 9332: 9329: 9327: 9324: 9322: 9319: 9317: 9314: 9312: 9309: 9307: 9304: 9302: 9299: 9297: 9294: 9292: 9289: 9287: 9284: 9282: 9279: 9277: 9274: 9272: 9269: 9267: 9264: 9262: 9259: 9257: 9254: 9252: 9249: 9247: 9244: 9242: 9239: 9237: 9234: 9232: 9229: 9227: 9224: 9222: 9219: 9217: 9214: 9210: 9207: 9206: 9205: 9202: 9200: 9197: 9195: 9192: 9190: 9187: 9185: 9182: 9180: 9177: 9175: 9172: 9168: 9165: 9163: 9160: 9159: 9158: 9155: 9153: 9150: 9148: 9145: 9143: 9140: 9138: 9135: 9133: 9130: 9128: 9125: 9123: 9120: 9118: 9115: 9113: 9110: 9108: 9105: 9103: 9100: 9098: 9095: 9093: 9090: 9088: 9085: 9081: 9078: 9076: 9073: 9071: 9068: 9066: 9063: 9061: 9058: 9056: 9053: 9051: 9048: 9046: 9043: 9041: 9038: 9037: 9036: 9033: 9031: 9028: 9026: 9023: 9021: 9018: 9016: 9013: 9011: 9008: 9006: 9003: 9001: 8998: 8996: 8993: 8991: 8988: 8986: 8983: 8981: 8978: 8976: 8973: 8971: 8968: 8966: 8963: 8961: 8958: 8956: 8953: 8951: 8948: 8946: 8943: 8941: 8938: 8934: 8931: 8929: 8926: 8925: 8924: 8921: 8919: 8916: 8914: 8911: 8909: 8906: 8904: 8901: 8899: 8896: 8894: 8891: 8889: 8886: 8884: 8881: 8879: 8876: 8873: 8869: 8866: 8864: 8861: 8859: 8856: 8854: 8851: 8849: 8846: 8844: 8841: 8839: 8836: 8834: 8831: 8829: 8826: 8824: 8821: 8819: 8816: 8814: 8811: 8809: 8806: 8804: 8801: 8799: 8796: 8794: 8791: 8789: 8786: 8784: 8781: 8779: 8776: 8774: 8771: 8769: 8766: 8764: 8761: 8759: 8756: 8754: 8751: 8747: 8744: 8742: 8739: 8737: 8734: 8732: 8729: 8727: 8724: 8723: 8722: 8719: 8717: 8714: 8712: 8709: 8707: 8704: 8702: 8699: 8697: 8694: 8692: 8689: 8687: 8684: 8682: 8679: 8677: 8674: 8672: 8669: 8667: 8664: 8663: 8661: 8657: 8651: 8648: 8646: 8643: 8641: 8638: 8636: 8633: 8631: 8628: 8626: 8623: 8621: 8618: 8616: 8613: 8611: 8608: 8606: 8603: 8601: 8598: 8596: 8593: 8591: 8588: 8586: 8583: 8581: 8578: 8576: 8573: 8571: 8568: 8566: 8563: 8561: 8558: 8556: 8553: 8551: 8548: 8546: 8543: 8541: 8538: 8536: 8533: 8531: 8528: 8526: 8523: 8519: 8516: 8514: 8511: 8509: 8506: 8504: 8501: 8499: 8496: 8494: 8491: 8489: 8486: 8484: 8481: 8479: 8476: 8474: 8471: 8469: 8466: 8464: 8461: 8459: 8456: 8454: 8451: 8449: 8446: 8444: 8441: 8439: 8436: 8435: 8434: 8431: 8429: 8426: 8424: 8421: 8419: 8416: 8414: 8411: 8409: 8406: 8404: 8401: 8399: 8396: 8394: 8391: 8389: 8386: 8384: 8381: 8379: 8376: 8374: 8371: 8369: 8366: 8364: 8361: 8359: 8356: 8354: 8351: 8349: 8346: 8344: 8341: 8339: 8336: 8334: 8331: 8329: 8326: 8324: 8321: 8319: 8316: 8314: 8311: 8309: 8306: 8302: 8299: 8298: 8297: 8294: 8292: 8289: 8287: 8284: 8282: 8279: 8277: 8274: 8272: 8269: 8267: 8264: 8262: 8259: 8257: 8254: 8252: 8249: 8247: 8244: 8242: 8239: 8237: 8234: 8232: 8229: 8227: 8224: 8222: 8219: 8217: 8214: 8212: 8209: 8207: 8204: 8202: 8199: 8197: 8194: 8192: 8189: 8187: 8184: 8182: 8179: 8177: 8174: 8172: 8169: 8167: 8164: 8162: 8159: 8157: 8154: 8152: 8149: 8147: 8144: 8142: 8139: 8137: 8134: 8132: 8129: 8127: 8124: 8122: 8119: 8117: 8114: 8112: 8109: 8107: 8104: 8102: 8099: 8097: 8094: 8092: 8089: 8087: 8084: 8080: 8077: 8075: 8072: 8070: 8067: 8066: 8065: 8062: 8060: 8057: 8055: 8052: 8050: 8047: 8045: 8042: 8040: 8037: 8035: 8032: 8030: 8027: 8025: 8022: 8020: 8017: 8015: 8012: 8010: 8007: 8005: 8002: 8000: 7997: 7995: 7992: 7990: 7987: 7985: 7982: 7980: 7977: 7975: 7972: 7970: 7967: 7965: 7962: 7960: 7957: 7955: 7952: 7950: 7947: 7945: 7942: 7940: 7937: 7935: 7932: 7930: 7927: 7925: 7922: 7920: 7917: 7915: 7912: 7910: 7907: 7905: 7902: 7900: 7897: 7895: 7892: 7890: 7887: 7885: 7882: 7880: 7877: 7875: 7872: 7870: 7867: 7865: 7862: 7860: 7857: 7855: 7852: 7850: 7847: 7845: 7842: 7838: 7835: 7833: 7830: 7828: 7825: 7823: 7820: 7818: 7815: 7814: 7813: 7810: 7808: 7805: 7803: 7800: 7798: 7795: 7793: 7790: 7788: 7785: 7783: 7780: 7778: 7775: 7773: 7770: 7768: 7765: 7763: 7760: 7758: 7755: 7753: 7750: 7748: 7745: 7743: 7740: 7738: 7735: 7733: 7730: 7726: 7723: 7721: 7718: 7716: 7713: 7711: 7708: 7706: 7703: 7701: 7698: 7696: 7693: 7691: 7688: 7686: 7683: 7681: 7678: 7676: 7673: 7671: 7668: 7666: 7663: 7662: 7661: 7658: 7656: 7653: 7651: 7648: 7646: 7643: 7641: 7638: 7636: 7633: 7631: 7628: 7626: 7623: 7621: 7618: 7616: 7613: 7612: 7610: 7606: 7602: 7601:IEC standards 7598: 7594: 7593:ISO standards 7588: 7580: 7573: 7568: 7566: 7561: 7559: 7554: 7553: 7550: 7538: 7530: 7528: 7525: 7523: 7520: 7518: 7515: 7513: 7510: 7502: 7501: 7498: 7492: 7491: 7487: 7485: 7482: 7480: 7477: 7475: 7472: 7470: 7467: 7465: 7462: 7460: 7457: 7455: 7452: 7450: 7447: 7445: 7442: 7440: 7437: 7435: 7432: 7430: 7427: 7423: 7422:Object Pascal 7420: 7419: 7418: 7415: 7413: 7410: 7408: 7405: 7403: 7400: 7398: 7395: 7393: 7390: 7388: 7385: 7383: 7380: 7378: 7375: 7373: 7370: 7368: 7365: 7363: 7360: 7358: 7355: 7353: 7350: 7348: 7345: 7343: 7340: 7338: 7335: 7333: 7330: 7324: 7321: 7319: 7316: 7315: 7314: 7311: 7310: 7309: 7306: 7304: 7301: 7299: 7296: 7292: 7289: 7288: 7287: 7284: 7282: 7279: 7278: 7275: 7269: 7266: 7264: 7261: 7259: 7256: 7255: 7252: 7248: 7241: 7236: 7234: 7229: 7227: 7222: 7221: 7218: 7209: 7206: 7205:0-262-19338-8 7202: 7198: 7194: 7190: 7189:Leon Sterling 7187: 7184: 7180: 7176: 7172: 7169: 7168:0-262-15039-5 7165: 7161: 7157: 7154: 7151: 7150:0-12-416521-4 7147: 7142: 7127: 7123: 7119: 7116: 7112: 7109: 7106: 7102: 7100: 7096: 7092: 7088: 7085: 7084:0-13-138645-X 7081: 7077: 7073: 7070: 7067: 7063: 7059: 7055: 7053: 7049: 7045: 7041: 7037: 7035: 7031: 7027: 7023: 7019: 7016: 7006:on 2007-08-26 7005: 7001: 6995: 6991: 6990: 6984: 6983: 6963: 6962: 6955: 6940:. p. 381 6939: 6938: 6933: 6926: 6911: 6905: 6897: 6893: 6889: 6885: 6884: 6876: 6869: 6861: 6857: 6853: 6849: 6845: 6841: 6840: 6832: 6825: 6816: 6807: 6799: 6795: 6791: 6787: 6782: 6777: 6772: 6767: 6763: 6759: 6752: 6745: 6740: 6732: 6725: 6718: 6710: 6706: 6702: 6698: 6694: 6690: 6683: 6676: 6669: 6666: 6660: 6645: 6639: 6631: 6627: 6621: 6613: 6607: 6603: 6599: 6595: 6588: 6580: 6573: 6564: 6559: 6555: 6551: 6544: 6536: 6530: 6526: 6522: 6518: 6514: 6510: 6503: 6494: 6489: 6482: 6474: 6468: 6464: 6457: 6449: 6445: 6441: 6437: 6432: 6431:10.1.1.57.395 6427: 6423: 6419: 6415: 6408: 6406: 6397: 6391: 6387: 6383: 6379: 6375: 6371: 6364: 6356: 6350: 6346: 6339: 6331: 6327: 6323: 6319: 6318: 6310: 6302: 6298: 6294: 6290: 6285: 6280: 6276: 6272: 6271: 6263: 6255: 6251: 6247: 6240: 6232: 6231: 6223: 6221: 6213: 6209: 6206: 6202: 6196: 6188: 6184: 6178: 6169: 6167: 6152: 6148: 6142: 6134: 6130: 6126: 6125: 6124:New Scientist 6120: 6114: 6106: 6100: 6092: 6088: 6083: 6078: 6074: 6070: 6069: 6064: 6057: 6048: 6043: 6039: 6035: 6031: 6024: 6016: 6010: 6006: 6002: 5998: 5991: 5983: 5979: 5975: 5969: 5965: 5961: 5957: 5950: 5942: 5938: 5934: 5930: 5925: 5920: 5916: 5912: 5905: 5897: 5890: 5883: 5875: 5871: 5867: 5863: 5859: 5855: 5848: 5840: 5836: 5832: 5828: 5821: 5813: 5809: 5802: 5794: 5788: 5784: 5783:Term indexing 5777: 5769: 5765: 5761: 5757: 5753: 5749: 5742: 5735: 5731: 5725: 5711:on 2009-08-23 5710: 5706: 5700: 5692: 5686: 5678: 5674: 5668: 5660: 5656: 5650: 5642: 5638: 5632: 5624: 5618: 5614: 5607: 5599: 5593: 5589: 5582: 5580: 5572: 5565: 5557: 5550: 5543: 5539: 5532: 5519:on 2010-04-12 5518: 5514: 5510: 5506: 5499: 5497: 5488: 5483: 5478: 5473: 5469: 5465: 5457: 5455: 5445: 5438: 5432: 5430: 5428: 5413: 5407: 5398: 5393: 5389: 5382: 5380: 5371: 5365: 5361: 5354: 5346: 5339: 5330: 5322: 5316: 5312: 5308: 5304: 5297: 5288: 5283: 5279: 5272: 5264: 5260: 5256: 5252: 5247: 5242: 5238: 5234: 5233: 5228: 5221: 5213: 5207: 5203: 5202: 5194: 5187: 5181: 5174: 5160: 5156: 5149: 5147: 5138: 5137: 5132: 5126: 5118: 5112: 5108: 5107: 5102: 5096: 5088: 5082: 5078: 5077: 5069: 5060: 5052: 5046: 5041: 5040: 5031: 5023: 5019: 5015: 5011: 5006: 5001: 4997: 4993: 4992: 4984: 4977: 4971: 4963: 4957: 4953: 4946: 4944: 4935: 4929: 4925: 4918: 4910: 4904: 4900: 4893: 4885: 4879: 4875: 4868: 4864: 4850: 4846: 4842: 4838: 4832: 4828: 4816: 4813: 4810: 4806: 4803: 4800: 4797: 4794: 4790: 4787: 4784: 4780: 4776: 4773: 4770: 4767: 4764: 4760: 4757: 4753: 4750: 4746: 4745:Visual Prolog 4743: 4740: 4736: 4732: 4728: 4727: 4719: 4716: 4713: 4710: 4707: 4704: 4702: 4699: 4698: 4692: 4690: 4686: 4683: 4679: 4675: 4670: 4666: 4665:Apache Hadoop 4662: 4654: 4650: 4640: 4638: 4633: 4623: 4613:and ... and B 4607: 4593: 4592:of the form: 4591: 4587: 4582: 4580: 4576: 4575: 4570: 4566: 4561: 4559: 4555: 4551: 4547: 4543: 4539: 4535: 4531: 4527: 4526: 4520: 4516: 4514: 4508: 4499: 4486: 4483: 4479: 4476: 4473: 4469: 4466: 4462: 4459: 4452: 4449: 4446: 4443: 4440: 4437: 4434: 4430: 4425: 4422: 4419: 4415: 4411: 4407: 4403: 4399: 4396: 4392: 4389: 4386: 4382: 4378: 4374: 4370: 4365: 4360: 4356: 4352: 4348: 4345: 4341: 4337: 4333: 4329: 4325: 4321: 4316: 4311: 4307: 4303: 4299: 4298: 4297: 4286: 4283: 4280: 4277: 4274: 4270: 4267: 4266: 4260: 4258: 4254: 4250: 4247: 4238: 4236: 4232: 4228: 4224: 4220: 4216: 4212: 4208: 4204: 4201: 4197: 4193: 4189: 4188:Visual Prolog 4179: 4177: 4173: 4169: 4159: 4157: 4153: 4149: 4148:Visual Prolog 4145: 4141: 4131: 4129: 4128:Visual Prolog 4125: 4122: 4118: 4114: 4112: 4108: 4106: 4102: 4100: 4096: 4094: 4090: 4086: 4082: 4078: 4069: 4067: 4063: 4059: 4051: 4047: 4038: 4029: 4024: 4023: 4016: 4011: 4010: 4003: 3998: 3997: 3993: 3990: 3989: 3981: 3979: 3969: 3967: 3963: 3959: 3955: 3951: 3947: 3937: 3935: 3931: 3927: 3922: 3918: 3915: 3904: 3902: 3898: 3894: 3890: 3886: 3884: 3880: 3870: 3868: 3862: 3857: 3855: 3851: 3847: 3843: 3839: 3835: 3831: 3827: 3821: 3811: 3809: 3805: 3795: 3793: 3791: 3786: 3782: 3779:that enables 3778: 3774: 3773:Term indexing 3768: 3767:Term indexing 3761:Term indexing 3758: 3755: 3751: 3741: 3739: 3735: 3730: 3726: 3716: 3714: 3710: 3705: 3702:(ISO) Prolog 3701: 3690: 3680: 3649: 3570: 3044: 3042: 3038: 3034: 3024: 2966: 2722: 2716: 2707: 2586: 2584: 2581:(also called 2580: 2576: 2572: 2562: 2560: 2555:expand_term/2 2544: 2538: 2534: 2524: 2522: 2518: 2514: 2510: 2506: 2502: 2498: 2493: 2491: 2487: 2483: 2479: 2475: 2474:module system 2471: 2461: 2459: 2455: 2450: 2444: 2440: 2324: 2313: 2168: 2166: 2162: 2156: 2154: 2115: 2111: 2101: 2099: 2095: 2091: 1849: 1847: 1809: 1807: 1723: 1721: 1711: 1658: 1613: 1612: 1609: 1606: 1604: 1601: 1600: 1597: 1589: 1586: 1572: 1562: 1556: 1552: 1539:\+ illegal(X) 1497: 1494:\+ illegal(X) 1491: 1490:non-monotonic 1487: 1473: 1466: 1438: 1379: 1377: 1372: 1368: 1364: 1354: 1247: 1245: 1238:Consider the 1236: 1228: 1222: 1217: 1170: 948: 946: 945:logic program 942: 938: 934: 896: 895: 859: 857: 824: 823: 797: 796: 792: 789: 757: 738: 736: 731: 729: 721: 713: 706: 702: 681: 679: 661:double_quotes 658: 655: 643: 639: 638: 637: 627: 623: 618: 617:compound term 614: 610: 607: 604: 600: 596: 593: 570: 566: 565: 564: 562: 558: 554: 550: 549: 544: 540: 530: 528: 524: 520: 516: 512: 508: 503: 500: 496: 492: 488: 482: 472: 469: 467: 463: 459: 455: 451: 447: 442: 440: 436: 432: 428: 424: 420: 416: 412: 407: 405: 401: 397: 393: 389: 378: 374: 370: 369: 367: 364: 363:Visual Prolog 360: 356: 352: 348: 344: 340: 336: 332: 328: 324: 320: 316: 311: 308: 304: 301:Influenced by 299: 295: 291: 288: 284: 280: 276: 273: 269: 265: 261: 257: 253: 249: 248:Scryer Prolog 245: 241: 237: 233: 229: 225: 221: 217: 213: 209: 206: 201: 197: 180: 165: 161: 147: 145: 141: 137: 135: 131: 127: 97: 95: 91: 87: 73: 69: 66: 63: 61: 57: 54: 51: 49: 45: 37: 33: 19: 9719:27000 series 8932: 8927: 8922: 7522:Generational 7512:Alphabetical 7508: 7488: 7438: 7313:Visual Basic 7196: 7193:Ehud Shapiro 7178: 7175:Aaron Sloman 7159: 7121: 7110: 7104: 7090: 7075: 7057: 7051: 7039: 7021: 7008:. Retrieved 7004:the original 6988: 6966:, retrieved 6960: 6954: 6942:. Retrieved 6935: 6925: 6913:. Retrieved 6904: 6887: 6881: 6868: 6843: 6837: 6824: 6815: 6806: 6761: 6757: 6751: 6739: 6730: 6717: 6692: 6688: 6675: 6664: 6659: 6648:. Retrieved 6644:"prolog-mpi" 6638: 6629: 6620: 6593: 6587: 6578: 6572: 6553: 6543: 6512: 6502: 6481: 6462: 6456: 6421: 6417: 6377: 6363: 6344: 6338: 6321: 6315: 6309: 6274: 6268: 6262: 6253: 6249: 6239: 6229: 6195: 6186: 6177: 6154:. Retrieved 6150: 6141: 6133:Google Books 6122: 6113: 6099: 6072: 6066: 6056: 6037: 6033: 6023: 5996: 5990: 5955: 5949: 5914: 5910: 5904: 5895: 5882: 5857: 5853: 5847: 5830: 5826: 5820: 5811: 5807: 5801: 5785:. Springer. 5782: 5776: 5751: 5747: 5741: 5724: 5713:. Retrieved 5709:the original 5699: 5685: 5676: 5667: 5658: 5649: 5640: 5631: 5612: 5606: 5587: 5570: 5564: 5555: 5549: 5541: 5537: 5531: 5521:, retrieved 5517:the original 5512: 5508: 5467: 5463: 5444: 5415:. Retrieved 5406: 5359: 5353: 5344: 5338: 5329: 5302: 5296: 5277: 5271: 5236: 5230: 5220: 5200: 5193: 5180: 5163:. Retrieved 5159:the original 5139:. Microtome. 5135: 5125: 5105: 5095: 5075: 5068: 5059: 5038: 5030: 4995: 4989: 4983: 4970: 4951: 4923: 4917: 4898: 4892: 4873: 4867: 4831: 4818:unification. 4646: 4634: 4619: 4605: 4590:Horn clauses 4583: 4572: 4562: 4538:Horn clauses 4522: 4510: 4506: 4504: 4394:development. 4373:Visual Basic 4351:Logic Server 4328:Visual Basic 4295: 4257:ActionScript 4244: 4215:semantic web 4185: 4165: 4137: 4126: 4115: 4109: 4103: 4097: 4075: 4044: 4035: 3975: 3958:linear logic 3943: 3926:cut operator 3923: 3919: 3910: 3887: 3876: 3866: 3864: 3859: 3849: 3823: 3801: 3790:superimposed 3788: 3784: 3770: 3747: 3722: 3709:ISO/IEC JTC1 3697: 3678: 3647: 3568: 3037:Horn clauses 3030: 3010: 2964: 2713:is an infix 2708: 2693: 2582: 2569:Prolog is a 2568: 2540: 2520: 2516: 2508: 2494: 2481: 2467: 2451: 2441:function in 2416: 2314: 2311: 2157: 2117: 2087: 1843: 1803: 1717: 1709: 1595: 1587: 1570: 1568: 1559:?- legal(X). 1532: 1496:in the rule 1479: 1467: 1464: 1445:father_child 1408: 1376:backtracking 1360: 1348: 1311:parent_child 1272:parent_child 1243: 1237: 1234: 1221:input/output 1218: 1200:given lists 1190:length(X, L) 1186:length(X, 5) 1171: 1160: 1141:mother_child 1120:parent_child 1102:father_child 1081:parent_child 1063:parent_child 1045:parent_child 1006:father_child 988:father_child 970:father_child 952:mother_child 944: 940: 936: 932: 930: 893: 891: 855: 853: 821: 820: 794: 793: 790: 783: 755: 734: 732: 700: 698: 678:Horn clauses 675: 656: 641: 635: 616: 608: 594: 568: 560: 556: 552: 546: 542: 536: 494: 490: 486: 484: 470: 458:type systems 443: 438: 415:formal logic 408: 387: 386: 379:at Wikibooks 212:Amzi! Prolog 9507:20000–29999 8659:10000–19999 7517:Categorical 7128:license at 7018:Ivan Bratko 6915:21 November 6513:Tapsoft '87 6424:(S1): 743. 6040:(10): 128. 5487:10174/33387 4595:H :- B 4398:InterProlog 4241:Adobe Flash 4227:client-side 4200:server-side 4162:Concurrency 4041:Constraints 3978:type safety 3877:During the 3846:memoization 3719:Compilation 3039:, which is 3019:to execute 2549:instead of 1592:Hello World 1547:?- \+ Goal. 728:disjunction 720:conjunction 585:'some atom' 523:side effect 519:truth value 435:computation 18:Prolog atom 9881:Categories 9286:16949 (TS) 8883:11941 (TR) 7581:standards 7382:JavaScript 7258:Comparison 7183:D. Sleeman 7010:2008-12-02 6968:2020-12-15 6944:23 October 6771:cs/0406012 6764:(3): 321. 6695:(3): 363. 6650:2010-09-16 6324:(3): 295. 6156:2023-07-12 6075:(4): 472. 5898:: 275–283. 5715:2009-10-02 5523:2010-02-16 5417:2013-05-04 5101:Ute Schmid 4859:References 4789:AgentSpeak 4685:TerminusDB 4586:resolution 4429:imperative 4418:SWI-Prolog 4235:Websockets 4221:(RDF) and 4198:, support 4192:SWI-Prolog 4168:SWI-Prolog 4152:WIN-PROLOG 4144:SWI-Prolog 3940:Extensions 3834:SWI-Prolog 3804:WIN-PROLOG 3694:ISO Prolog 2957:Certainty2 2951:Certainty1 2939:Certainty2 2921:Certainty1 2834:Certainty2 2828:Certainty1 2810:Certainty2 2792:Certainty1 2571:homoiconic 2517:atom-based 1808:notation: 1608:GNU Prolog 1603:SWI-Prolog 1571:consulting 1535:illegal(X) 1363:resolution 1351:ancestor/2 1161:Predicate 941:name/arity 718:) denotes 714:with name 533:Data types 515:predicates 502:refutation 499:resolution 313:Influenced 294:ISO Prolog 272:WIN-PROLOG 264:Tau Prolog 260:SWI-Prolog 256:Strawberry 232:LPA Prolog 228:GNU Prolog 9241:15926 WIP 8605:9592/9593 8530:9000/9001 8418:8805/8806 7479:Smalltalk 7117:, Geneva. 6890:(3): 37. 6776:CiteSeerX 6581:. August. 6493:0911.2899 6426:CiteSeerX 6279:CiteSeerX 5924:1012.5123 5833:: 23–44. 5754:: 54–68. 5505:"Logtalk" 5439:, Geneva. 5392:CiteSeerX 5282:CiteSeerX 5246:0911.2899 5188:, Geneva. 5171:See also 5000:CiteSeerX 4505:The name 4461:C#-Prolog 4285:OW Prolog 4174:over the 4020:on entry 4007:on entry 3948:, modes, 3901:touch pad 3792:codewords 2945:Certainty 2903:clause_cf 2894:Certainty 2816:Certainty 2768:Certainty 2149:sublist/3 2145:maplist/2 2133:findall/3 2069:quicksort 2054:quicksort 2021:partition 2009:quicksort 1997:quicksort 1964:partition 1922:partition 1871:partition 1853:partition 1846:quicksort 1840:Quicksort 1484:provides 1357:Execution 1246:relation: 933:predicate 609:Variables 557:variables 539:data type 431:relations 192:/standard 175:/standard 9866:Category 7591:List of 7537:Category 7303:Assembly 7263:Timeline 7211:109–115. 7199:, 1994, 7093:, 1994, 7078:, 1996, 6860:12259230 6798:11754347 6448:12235465 6208:Archived 6187:Faqs.org 5982:10283148 5874:16695800 5768:16447071 5748:Computer 5022:14621218 4809:PicoLisp 4695:See also 4599:, ..., B 4478:tuProlog 4249:Archived 4231:JSON-RPC 4156:B-Prolog 4134:Graphics 4117:Prolog++ 3899:, via a 3861:clauses. 3826:B-Prolog 2804:Subgoal2 2786:Subgoal1 2762:Subgoal2 2756:Subgoal1 2715:operator 2641:Subgoal2 2629:Subgoal1 2614:Subgoal2 2608:Subgoal1 2547:-->/2 2509:de-facto 2482:de-facto 2429:unifies 2153:currying 1555:"ground" 1476:Negation 1329:ancestor 1290:ancestor 1251:ancestor 1244:ancestor 1194:append/3 1174:length/2 921:socrates 849:socrates 810:socrates 767:socrates 748:socrates 726:denotes 712:operator 603:integers 287:Dialects 268:tuProlog 216:B-Prolog 183:Part 2: 166:Part 1: 48:Paradigm 32:Prologue 9767:29199-2 9639:23094-2 9634:23094-1 9624:23090-3 9493:19794-5 9488:19775-1 9276:16612-2 9266:16355-1 8955:13406-2 8913:12234-2 8681:10118-3 7490:more... 7469:Scratch 7372:Haskell 7362:Fortran 7318:classic 7268:History 7133:.google 6709:5404048 6091:2978041 5941:6153112 5165:13 June 4815:λProlog 4779:Planner 4769:Mercury 4759:Datalog 4678:GeneXus 4546:Fortran 4493:History 4402:library 4269:F-logic 4099:Logtalk 4081:F-logic 4077:Flora-2 3952:(CLP), 3930:Datalog 3850:tabling 3814:Tabling 3808:WordNet 3798:Hashing 3775:uses a 3324:perform 3186:perform 3144:perform 3102:reverse 3069:perform 2988:builtin 2970:builtin 2861:builtin 2527:Parsing 2497:Logtalk 2490:SICStus 2486:Quintus 2464:Modules 2458:λProlog 2391:maplist 2346:maplist 2328:maplist 2317:maplist 2292:sumlist 2244:between 2229:findall 2187:between 2172:perfect 2141:bagof/3 2137:setof/3 2060:Smaller 2039:Smaller 1519:illegal 1431:Z = tom 1386:sibling 1371:unifies 1225:write/1 1024:sibling 657:Strings 597:can be 595:Numbers 553:numbers 541:is the 495:clauses 351:Mercury 347:Logtalk 327:Datalog 323:Clojure 307:Planner 252:SICStus 224:ECLiPSe 163:Website 119:2000-06 117: ( 106:1995-06 104: ( 79: ( 9781:30000+ 8620:9797-1 8428:8820-5 8373:8501-1 7929:1073-2 7924:1073-1 7608:1–9999 7509:Lists: 7444:Python 7439:Prolog 7417:Pascal 7407:MATLAB 7392:Kotlin 7352:Erlang 7291:Simula 7203:  7181:, Eds 7166:  7148:  7097:  7082:  7064:  7046:  7028:  6996:  6858:  6846:: 38. 6796:  6778:  6707:  6608:  6531:  6469:  6446:  6428:  6392:  6351:  6301:518049 6299:  6281:  6089:  6011:  5980:  5970:  5939:  5872:  5789:  5766:  5619:  5594:  5571:SIGMOD 5394:  5366:  5317:  5284:  5263:438363 5261:  5208:  5113:  5083:  5047:  5020:  5002:  4958:  4930:  4905:  4880:  4843:or an 4799:Erlang 4649:Watson 4519:French 4507:Prolog 4488:teams. 4377:Delphi 4375:(VB), 4344:Python 4332:Delphi 4330:(VB), 4154:, and 4111:Objlog 4091:, and 4005:nonvar 3907:Limits 3840:, and 3656:turing 3498:action 3462:action 3393:action 3375:symbol 3360:symbol 3297:Action 3291:action 3285:Action 3279:NewSym 3243:RsRest 3225:symbol 3120:append 3048:turing 3006:% etc. 2719:read/1 2694:where 2662:clause 2559:monads 2535:, and 2427:P(X,Y) 2139:, and 2129:call/3 2125:call/2 2121:call/1 2075:Bigger 2045:Bigger 2015:--> 2003:--> 1982:Smalls 1913:Smalls 1883:Smalls 1816:--> 1451:Father 903:mortal 863:mortal 786:true/0 612:terms. 599:floats 589:'p(a)' 587:, and 581:'Taco' 460:, and 388:Prolog 377:Prolog 359:Strand 335:Epilog 331:Erlang 236:Poplog 203:Major 194:/20775 177:/21413 42:Prolog 9848:80000 9843:56000 9838:55000 9833:50001 9828:45001 9823:42010 9818:40500 9813:39075 9808:38500 9803:37001 9798:32000 9793:31000 9788:30170 9772:29500 9762:29148 9758:29110 9754:28000 9749:27729 9744:27006 9739:27005 9734:27002 9729:27001 9724:27000 9714:26324 9709:26300 9704:26262 9699:26000 9694:25964 9689:25178 9684:24728 9679:24707 9674:24617 9669:24613 9664:24517 9659:23941 9654:23360 9649:23271 9644:23270 9629:23092 9619:23009 9614:23008 9609:23003 9604:23000 9599:22537 9594:22395 9589:22301 9584:22300 9579:22275 9574:22000 9569:21827 9564:21500 9559:21122 9554:21047 9549:21001 9544:21000 9539:20830 9534:20802 9529:20400 9524:20121 9519:20022 9514:20000 9498:19831 9483:19770 9478:19757 9473:19752 9468:19600 9463:19510 9458:19509 9453:19508 9448:19507 9443:19506 9438:19505 9433:19503 9428:19502 9423:19501 9418:19500 9413:19439 9408:19407 9403:19136 9398:19125 9393:19115 9388:19114 9371:19092 9366:19011 9361:19005 9356:18916 9351:18629 9346:18245 9341:18181 9336:18014 9331:18004 9326:17799 9321:17506 9316:17442 9311:17369 9306:17203 9301:17100 9296:17025 9291:17024 9281:16750 9271:16485 9261:16262 9256:16023 9251:15938 9246:15930 9236:15926 9231:15924 9226:15919 9221:15897 9216:15707 9204:15706 9199:15693 9194:15686 9189:15511 9184:15504 9179:15438 9174:15445 9157:15444 9152:15408 9147:15398 9142:15291 9137:15288 9132:15189 9127:15022 9122:14971 9117:14882 9112:14764 9107:14698 9102:14651 9097:14649 9092:14644 9087:14617 9035:14496 9030:14443 9025:14396 9020:14289 9015:14224 9010:14031 9005:14000 9000:13818 8995:13816 8990:13616 8985:13584 8980:13568 8975:13567 8970:13490 8965:13485 8960:13450 8950:13399 8945:13250 8940:13216 8923:13211 8918:12620 8908:12207 8903:12182 8898:12052 8893:12006 8888:11992 8878:11941 8868:11940 8863:11898 8858:11889 8853:11801 8848:11785 8843:11784 8838:11783 8833:11544 8828:11404 8823:11179 8818:11172 8813:11170 8808:11073 8803:10967 8798:10962 8793:10957 8788:10861 8783:10746 8778:10664 8773:10646 8768:10628 8763:10589 8758:10585 8753:10383 8721:10303 8716:10279 8711:10218 8706:10206 8701:10179 8696:10165 8691:10161 8686:10160 8676:10116 8671:10007 8666:10006 7484:Swift 7474:Shell 7387:Julia 7357:Forth 7347:COBOL 7308:BASIC 7286:ALGOL 7137:/site 7131:sites 6878:(PDF) 6856:S2CID 6834:(PDF) 6794:S2CID 6766:arXiv 6727:(PDF) 6705:S2CID 6685:(PDF) 6488:arXiv 6444:S2CID 6372:. In 6297:S2CID 6087:S2CID 5978:S2CID 5937:S2CID 5919:arXiv 5892:(PDF) 5870:S2CID 5764:S2CID 5259:S2CID 5241:arXiv 5018:S2CID 4837:logic 4823:Notes 4805:Pilog 4731:Gödel 4525:logic 4485:Janus 4424:Prova 4263:Other 4246:Cedar 4105:Oblog 4085:HiLog 3984:Modes 3972:Types 3946:types 3604:right 3504:right 3090:Tape0 3054:Tape0 2927:solve 2882:solve 2840:solve 2798:solve 2780:solve 2750:solve 2726:solve 2680:solve 2647:solve 2635:solve 2623:solve 2602:solve 2590:solve 2454:HiLog 2417:When 1976:Pivot 1934:Pivot 1910:-> 1907:Pivot 1904:@< 1877:Pivot 1790:Prog2 1778:Prog2 1772:Prog1 1760:Prog1 1754:Prog0 1733:Prog0 1689:World 1686:Hello 1668:write 1641:World 1638:Hello 1620:write 1551:sound 1501:legal 1457:Child 1398:erica 1392:sally 1206:ListB 1202:ListA 1000:erica 982:sally 964:sally 958:trude 878:human 856:rules 831:human 804:human 761:human 742:human 735:facts 701:goals 626:arity 622:arity 548:atoms 487:query 439:query 433:. A 427:rules 390:is a 196:.html 179:.html 123:) 53:Logic 8746:-238 8650:9995 8645:9985 8640:9984 8635:9945 8630:9899 8625:9897 8615:9660 8610:9594 8600:9564 8595:9529 8590:9506 8585:9496 8580:9407 8575:9362 8570:9314 8565:9293 8560:9241 8555:9227 8550:9141 8545:9126 8540:9075 8535:9036 8525:8879 8478:-8-I 8433:8859 8423:8807 8413:8691 8408:8652 8403:8651 8398:8632 8393:8613 8388:8601 8383:8583 8378:8571 8368:8373 8363:8217 8358:8178 8353:8093 8348:8000 8343:7942 8338:7816 8333:7813 8328:7812 8323:7811 8318:7810 8313:7736 8308:7637 8296:7498 8291:7200 8286:7185 8281:7098 8276:7064 8271:7027 8266:7010 8261:7002 8256:7001 8251:6943 8246:6709 8241:6523 8236:6438 8231:6429 8226:6425 8221:6385 8216:6373 8211:6346 8206:6344 8201:6166 8196:5964 8191:5807 8186:5800 8181:5776 8176:5775 8171:5725 8166:5428 8161:5427 8156:5426 8151:5218 8146:4909 8141:4217 8136:4165 8131:4157 8126:4031 8121:3977 8116:3950 8111:3901 8106:3864 8101:3602 8096:3601 8091:3307 8086:3297 8064:3166 8059:3103 8054:3029 8049:2921 8044:2852 8039:2848 8034:2788 8029:2720 8024:2711 8019:2709 8014:2533 8009:2281 8004:2240 7999:2146 7994:2145 7989:2108 7984:2047 7979:2033 7974:2022 7969:2015 7964:2014 7959:1989 7954:1745 7949:1629 7944:1538 7939:1413 7934:1155 7919:1007 7914:1004 7909:1000 7732:68-1 7459:Rust 7454:Ruby 7429:Perl 7397:Lisp 7377:Java 7323:.NET 7201:ISBN 7191:and 7164:ISBN 7146:ISBN 7135:.com 7095:ISBN 7080:ISBN 7062:ISBN 7044:ISBN 7026:ISBN 6994:ISBN 6946:2013 6937:Byte 6917:2021 6606:ISBN 6579:Byte 6529:ISBN 6467:ISBN 6390:ISBN 6349:ISBN 6009:ISBN 5968:ISBN 5787:ISBN 5617:ISBN 5592:ISBN 5542:4369 5364:ISBN 5315:ISBN 5206:ISBN 5167:2014 5111:ISBN 5081:ISBN 5045:ISBN 4974:See 4956:ISBN 4928:ISBN 4903:ISBN 4878:ISBN 4841:term 4729:The 4653:UIMA 4565:Lisp 4521:for 4451:Ciao 4439:PROL 4431:and 4416:and 4406:Java 4381:.NET 4369:Java 4349:The 4336:.NET 4324:Java 4300:The 4233:and 4209:and 4207:HTML 4196:Ciao 4194:and 4142:are 3889:Sega 3842:Ciao 3736:and 3713:SC22 3698:The 3640:stay 3610:rule 3574:rule 3546:left 3528:left 3468:stay 3432:left 3399:left 3255:rule 3249:once 3138:Tape 3060:Tape 3021:Goal 2994:read 2933:Body 2915:Body 2909:Head 2888:Head 2876:Goal 2867:Goal 2846:Goal 2732:true 2711::-/2 2696:true 2686:Body 2674:Body 2668:Head 2653:Head 2596:true 2551::-/2 2505:Ciao 2468:For 2456:and 2367:call 2112:and 1988:Rest 1955:Bigs 1946:Bigs 1940:Rest 1889:Bigs 1844:The 1796:Prog 1739:Prog 1647:true 1543:\+/1 1482:\+/1 1214:List 1204:and 1182:List 1012:mike 935:(or 776:true 691:Body 685:Head 642:List 569:atom 543:term 491:term 413:, a 402:and 220:Ciao 190:.org 188:.iso 173:.org 171:.iso 153:.pro 81:1972 74:1972 9080:-20 9075:-17 9070:-14 9065:-12 9060:-11 9055:-10 8741:-28 8736:-22 8731:-21 8726:-11 8518:-16 8513:-15 8508:-14 8503:-13 8498:-12 8493:-11 8488:-10 7904:999 7899:965 7894:898 7889:860 7884:843 7879:838 7874:764 7869:732 7864:704 7859:690 7854:668 7849:657 7844:646 7812:639 7807:519 7802:518 7797:500 7792:361 7787:306 7782:302 7777:262 7772:261 7767:259 7762:233 7757:228 7752:226 7747:217 7742:216 7737:128 7725:-13 7720:-12 7715:-11 7710:-10 7579:ISO 7464:SQL 7434:PHP 7402:Lua 7337:C++ 7298:APL 7281:Ada 7144:). 6892:doi 6848:doi 6786:doi 6697:doi 6598:doi 6558:doi 6521:doi 6517:111 6436:doi 6382:doi 6326:doi 6289:doi 6256:(3) 6077:doi 6042:doi 6001:doi 5960:doi 5929:doi 5862:doi 5835:doi 5756:doi 5677:ISO 5659:ISO 5641:ISO 5482:hdl 5472:doi 5307:doi 5251:doi 5010:doi 4755:it. 4657:C++ 4455:C++ 4414:XSB 4391:JPL 4364:C++ 4355:API 4340:Lua 4315:C++ 4211:XML 4018:var 3838:YAP 3830:XSB 3787:or 3537:Rs0 3510:Ls0 3450:Rs0 3438:Ls0 3417:Rs0 3405:Ls0 3381:Sym 3348:Rs1 3336:Ls1 3318:Rs1 3309:Ls1 3303:Ls0 3288:)), 3267:Sym 3237:Sym 3231:Rs0 3210:Rs0 3198:Ls0 3126:Ls1 3114:Ls1 3003:)). 2822:min 2513:XSB 2445:as 2439:map 2277:=:= 2271:mod 2199:inf 1806:DCG 1695:yes 1404:Yes 1018:tom 994:tom 976:tom 816:Yes 724:;/2 708:,/2 650:or 601:or 577:red 567:An 559:or 343:KL1 339:KL0 319:CHR 279:YAP 275:XSB 262:, 230:, 186:www 169:www 149:.pl 9883:: 9381:-2 9376:-1 9209:-2 9167:-9 9162:-3 9050:-6 9045:-3 9040:-2 8933:-2 8928:-1 8872:-2 8483:-9 8473:-8 8468:-7 8463:-6 8458:-5 8453:-4 8448:-3 8443:-2 8438:-1 8301:-1 8079:-3 8074:-2 8069:-1 7837:-6 7832:-5 7827:-3 7822:-2 7817:-1 7705:-9 7700:-8 7695:-7 7690:-6 7685:-5 7680:-4 7675:-3 7670:-1 7665:-0 7660:31 7655:17 7650:16 7599:– 7595:– 7412:ML 7367:Go 7342:C# 7195:, 7162:, 7158:, 7113:. 7050:. 7032:. 7020:, 6934:. 6888:28 6886:. 6880:. 6854:. 6844:31 6842:. 6836:. 6792:. 6784:. 6774:. 6760:. 6729:, 6703:. 6691:. 6687:. 6628:. 6604:. 6552:. 6527:. 6519:. 6511:. 6442:. 6434:. 6420:. 6416:. 6404:^ 6388:. 6322:23 6320:. 6295:. 6287:. 6275:33 6273:. 6252:, 6248:, 6219:^ 6203:. 6185:. 6165:^ 6149:. 6127:. 6121:. 6085:. 6073:23 6071:. 6065:. 6038:22 6036:. 6032:. 6007:. 5976:. 5966:. 5935:. 5927:. 5915:12 5913:. 5894:. 5868:. 5858:25 5856:. 5831:10 5829:. 5810:. 5762:. 5752:25 5750:. 5675:. 5657:. 5639:. 5578:^ 5540:, 5513:17 5511:, 5507:, 5495:^ 5480:, 5468:22 5466:, 5453:^ 5426:^ 5390:. 5378:^ 5313:. 5257:. 5249:. 5237:12 5235:. 5145:^ 5016:. 5008:. 4994:. 4942:^ 4691:. 4632:. 4617:. 4603:. 4581:. 4560:. 4379:, 4371:, 4367:, 4361:, 4342:, 4338:, 4334:, 4326:, 4322:, 4320:C# 4318:, 4312:, 4259:. 4237:. 4190:, 4158:. 4150:, 4146:, 4095:. 4087:, 4068:. 3968:: 3903:. 3836:, 3832:, 3828:, 3810:. 3740:. 3668:Ts 3665:). 3662:Ts 3659:(, 3653:?- 3643:). 3628:qf 3616:q0 3607:). 3592:q0 3580:q0 3564:). 3558:Rs 3552:Ls 3549:(, 3543:). 3531:(, 3525:). 3522:Rs 3495:). 3492:Rs 3486:Rs 3480:Ls 3474:Ls 3459:). 3456:Rs 3444:Ls 3429::- 3423:Rs 3411:Ls 3390:). 3387:Rs 3378:(, 3372:). 3363:(, 3357:). 3354:Rs 3342:Ls 3330:Q1 3321:), 3273:Q1 3261:Q0 3246:), 3222::- 3216:Rs 3204:Ls 3192:Q0 3183:!. 3180::- 3174:Rs 3168:Rs 3162:Ls 3156:Ls 3150:qf 3141:). 3132:Rs 3117:), 3108:Ls 3099:), 3096:Rs 3084:Ls 3075:q0 3066::- 3035:, 2985:). 2979:is 2948:is 2942:), 2924:), 2900::- 2873:!, 2870:), 2858::- 2837:). 2819:is 2813:), 2795:), 2777:!, 2774::- 2765:), 2753:(( 2747:!. 2744::- 2706:. 2689:). 2677:), 2659::- 2644:). 2632:), 2620::- 2617:)) 2605:(( 2599:). 2460:. 2449:. 2425:, 2412:). 2409:Ys 2403:Xs 2388:), 2364::- 2343:). 2307:). 2298:Ds 2289:), 2286:Ds 2283:), 2265:), 2220:// 2214:is 2208:), 2184::- 2155:. 2135:, 2131:, 2127:, 2123:, 2100:. 2088:A 2078:). 2063:), 2051:}, 2027:Xs 2012:() 2000:() 1994:). 1970:Xs 1928:Xs 1895::- 1874:(, 1868:). 1856:(, 1799:). 1781:), 1763:), 1745::- 1701:?- 1680:nl 1677:), 1665:?- 1653:?- 1632:nl 1629:), 1617:?- 1579:no 1575:?- 1528:). 1516:\+ 1513::- 1460:). 1442:?- 1401:). 1383:?- 1344:). 1326:), 1308::- 1287:). 1269::- 1156:). 1138::- 1117:). 1099::- 1078:). 1060:), 1042::- 1021:). 1003:). 985:). 967:). 931:A 912:). 900:?- 887:). 875::- 840:). 828:?- 813:). 801:?- 773::- 751:). 688::- 640:A 615:A 583:, 579:, 575:, 563:. 555:, 551:, 468:. 456:, 452:, 448:, 406:. 398:, 361:, 357:, 355:Oz 353:, 349:, 345:, 341:, 337:, 333:, 329:, 325:, 321:, 277:, 270:, 266:, 258:, 254:, 250:, 246:, 242:, 240:P# 238:, 234:, 226:, 222:, 218:, 214:, 157:.P 155:, 151:, 8874:) 8870:( 7645:9 7640:7 7635:6 7630:4 7625:3 7620:2 7615:1 7571:e 7564:t 7557:v 7449:R 7332:C 7239:e 7232:t 7225:v 7207:. 7170:. 7152:. 7141:/ 7086:. 7068:. 7013:. 6948:. 6919:. 6898:. 6894:: 6862:. 6850:: 6800:. 6788:: 6768:: 6762:1 6711:. 6699:: 6693:8 6653:. 6632:. 6614:. 6600:: 6566:. 6560:: 6537:. 6523:: 6496:. 6490:: 6475:. 6450:. 6438:: 6422:6 6398:. 6384:: 6357:. 6332:. 6328:: 6303:. 6291:: 6254:7 6214:. 6189:. 6159:. 6135:. 6107:. 6093:. 6079:: 6050:. 6044:: 6017:. 6003:: 5984:. 5962:: 5943:. 5931:: 5921:: 5876:. 5864:: 5841:. 5837:: 5795:. 5770:. 5758:: 5718:. 5693:. 5679:. 5661:. 5643:. 5625:. 5600:. 5484:: 5474:: 5420:. 5400:. 5372:. 5323:. 5309:: 5290:. 5265:. 5253:: 5243:: 5175:. 5169:. 5119:. 5089:. 5053:. 5024:. 5012:: 4996:4 4978:. 4964:. 4936:. 4911:. 4886:. 4795:. 4785:. 4765:. 4741:. 4630:i 4626:i 4615:n 4611:1 4601:n 4597:1 4517:( 4435:. 4420:. 4359:C 4310:C 4275:. 4026:? 4013:- 4000:+ 3711:/ 3674:; 3671:= 3637:, 3634:1 3631:, 3625:, 3622:b 3619:, 3613:( 3601:, 3598:1 3595:, 3589:, 3586:1 3583:, 3577:( 3561:, 3555:, 3540:, 3534:, 3519:, 3516:, 3513:, 3507:, 3501:( 3489:, 3483:, 3477:, 3471:, 3465:( 3453:, 3447:, 3441:, 3435:( 3426:) 3420:, 3414:, 3408:, 3402:, 3396:( 3384:, 3369:, 3366:b 3351:, 3345:, 3339:, 3333:, 3327:( 3315:, 3312:, 3306:, 3300:, 3294:( 3282:, 3276:, 3270:, 3264:, 3258:( 3252:( 3240:, 3234:, 3228:( 3219:) 3213:, 3207:, 3201:, 3195:, 3189:( 3177:) 3171:, 3165:, 3159:, 3153:, 3147:( 3135:, 3129:, 3123:( 3111:, 3105:( 3093:, 3087:, 3081:, 3078:, 3072:( 3063:) 3057:, 3051:( 3000:X 2997:( 2991:( 2982:B 2976:A 2973:( 2960:. 2954:* 2936:, 2930:( 2918:, 2912:, 2906:( 2897:) 2891:, 2885:( 2879:. 2864:( 2855:) 2852:1 2849:, 2843:( 2831:, 2825:( 2807:, 2801:( 2789:, 2783:( 2771:) 2759:, 2741:) 2738:1 2735:, 2729:( 2683:( 2671:, 2665:( 2656:) 2650:( 2638:( 2626:( 2611:, 2593:( 2488:/ 2431:Y 2423:X 2419:P 2406:, 2400:, 2397:P 2394:( 2385:Y 2382:, 2379:X 2376:, 2373:P 2370:( 2361:) 2358:, 2355:, 2352:P 2349:( 2340:, 2337:, 2334:_ 2331:( 2321:P 2304:N 2301:, 2295:( 2280:0 2274:D 2268:N 2262:D 2259:, 2256:U 2253:, 2250:1 2247:( 2241:( 2238:, 2235:D 2232:( 2226:, 2223:2 2217:N 2211:U 2205:N 2202:, 2196:, 2193:1 2190:( 2181:) 2178:N 2175:( 2072:( 2066:, 2057:( 2048:) 2042:, 2036:, 2033:X 2030:, 2024:( 2018:{ 2006:. 1991:) 1985:, 1979:, 1973:, 1967:( 1961:, 1958:= 1952:; 1949:) 1943:, 1937:, 1931:, 1925:( 1919:, 1916:= 1901:X 1898:( 1892:) 1886:, 1880:, 1865:, 1862:, 1859:_ 1834:. 1828:, 1822:, 1793:, 1787:( 1775:, 1769:( 1757:, 1751:( 1742:) 1736:, 1730:( 1698:| 1692:! 1683:. 1671:( 1662:| 1650:. 1644:! 1635:. 1623:( 1583:; 1525:X 1522:( 1510:) 1507:X 1504:( 1454:, 1448:( 1395:, 1389:( 1341:Y 1338:, 1335:Z 1332:( 1323:Z 1320:, 1317:X 1314:( 1305:) 1302:Y 1299:, 1296:X 1293:( 1284:Y 1281:, 1278:X 1275:( 1266:) 1263:Y 1260:, 1257:X 1254:( 1153:Y 1150:, 1147:X 1144:( 1135:) 1132:Y 1129:, 1126:X 1123:( 1114:Y 1111:, 1108:X 1105:( 1096:) 1093:Y 1090:, 1087:X 1084:( 1075:Y 1072:, 1069:Z 1066:( 1057:X 1054:, 1051:Z 1048:( 1039:) 1036:Y 1033:, 1030:X 1027:( 1015:, 1009:( 997:, 991:( 979:, 973:( 961:, 955:( 918:= 915:X 909:X 906:( 884:X 881:( 872:) 869:X 866:( 846:= 843:X 837:X 834:( 807:( 779:. 770:) 764:( 745:( 716:, 694:. 667:. 653:. 632:. 591:. 573:x 281:. 121:) 110:) 108:) 83:) 38:. 20:)

Index

Prolog atom
Prologue
Prologue (disambiguation)
Paradigm
Logic
Designed by
Alain Colmerauer
Stable release
Typing discipline
Filename extensions
www.iso.org/standard/21413.html
www.iso.org/standard/20775.html
implementations
Amzi! Prolog
B-Prolog
Ciao
ECLiPSe
GNU Prolog
LPA Prolog
Poplog
P#
Quintus Prolog
Scryer Prolog
SICStus
Strawberry
SWI-Prolog
Tau Prolog
tuProlog
WIN-PROLOG
XSB

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.