Search results
Results from the WOW.Com Content Network
Prolog is a logic programming language that has its origins in artificial intelligence, automated theorem proving and computational linguistics. [1] [2] [3]Prolog has its roots in first-order logic, a formal logic, and unlike many other programming languages, Prolog is intended primarily as a declarative programming language: the program is a set of facts and rules, which define relations.
Other examples of atoms include x, blue, 'Taco', and 'some atom'. Numbers can be floats or integers. Many Prolog implementations also provide unbounded integers and rational numbers. Variables are denoted by a string consisting of letters, numbers and underscore characters, and beginning with an upper-case letter or underscore. Variables ...
In pure Prolog, normal DCG rules with no extra arguments on the functors, such as the previous example, can only express context-free grammars; there is only one argument on the left side of the production. However, context-sensitive grammars can also be expressed with DCGs, by providing extra arguments, such as in the following example:
Prolog provides other features, in addition to cut, that do not have a logical interpretation. These include the built-in predicates assert and retract for destructively updating the state of the program during program execution. For example, the toy blocks world example above can be implemented without frame axioms using destructive change of ...
Prolog (1972) stands for "PROgramming in LOGic." It was developed for natural language question answering, [12] using SL resolution [13] both to deduce answers to queries and to parse and generate natural language sentences. The building blocks of a Prolog program are facts and rules. Here is a simple example:
This is called a green cut operator.The ! tells the interpreter to stop looking for alternatives; however, if gotmoney(X) fails it will check the second rule. Although checking for gotmoney(X) in the second rule may appear redundant since Prolog's appearance is dependent on gotmoney(X) failing before, otherwise the second rule would not be evaluated in the first place.
Prolog implementations usually omit the occurs check for reasons of efficiency, which can lead to circular data structures and looping. By not performing the occurs check, the worst case complexity of unifying a term with term is reduced in many cases from (() + ()) to (((), ())); in the particular, frequent case of variable-term unifications, runtime shrinks to ().
The following Comparison of Prolog implementations provides a reference for the relative feature sets and performance of different implementations of the Prolog computer programming language. A comprehensive discussion of the most significant Prolog systems is presented in an article published in the 50-years of Prolog anniversary issue of the ...