In the Prolog family of logic programming languages, the programmer can also use the known problem-solving behaviour of the execution mechanism to improve the efficiency of programs. ==History== The use of mathematical logic to represent and execute computer programs is also a feature of the lambda calculus, developed by Alonzo Church in the 1930s.
Foster and Elcock's Absys, on the other hand, employed a combination of equations and lambda calculus in an assertional programming language which places no constraints on the order in which operations are performed. Logic programming in its present form can be traced back to debates in the late 1960s and early 1970s about declarative versus procedural representations of knowledge in artificial intelligence.
December 1965. Gabbay, Dov M.; Hogger, Christopher John; Robinson, J.A., eds.
Foster and Elcock's Absys, on the other hand, employed a combination of equations and lambda calculus in an assertional programming language which places no constraints on the order in which operations are performed. Logic programming in its present form can be traced back to debates in the late 1960s and early 1970s about declarative versus procedural representations of knowledge in artificial intelligence.
During the summer of 1971, Colmerauer and Kowalski discovered that the clausal form of logic could be used to represent formal grammars and that resolution theorem provers could be used for parsing.
IJCAI 1971. Carl Hewitt.
In particular, Prakken and Sartor credit the representation of the British Nationality Act as a logic program with being "hugely influential for the development of computational representations of legislation, showing how logic programming enables intuitively appealing representations that can be directly deployed to generate automatic inferences". ==Variants and extensions== ===Prolog=== The programming language Prolog was developed in 1972 by Alain Colmerauer.
They observed that some theorem provers, like hyper-resolution, behave as bottom-up parsers and others, like SL-resolution (1971), behave as top-down parsers. It was in the following summer of 1972, that Kowalski, again working with Colmerauer, developed the procedural interpretation of implications.
Kowalski's procedural interpretation and LUSH were described in a 1973 memo, published in 1974. Colmerauer, with Philippe Roussel, used this dual interpretation of clauses as the basis of Prolog, which was implemented in the summer and autumn of 1972.
The first Prolog program, also written in 1972 and implemented in Marseille, was a French question-answering system.
33(3): 374–425 (2001) Ulf Nilsson and Jan Maluszynski, Logic, Programming and Prolog ==External links== Logic Programming Virtual Library entry Bibliographies on Logic Programming Association for Logic Programming (ALP) Theory and Practice of Logic Programming (journal) Logic programming in C++ with Castor Logic programming in Oz Prolog Development Center Racklog: Logic Programming in Racket Computer-related introductions in 1972 Programming paradigms Logic
Kowalski's procedural interpretation and LUSH were described in a 1973 memo, published in 1974. Colmerauer, with Philippe Roussel, used this dual interpretation of clauses as the basis of Prolog, which was implemented in the summer and autumn of 1972.
Kowalski's procedural interpretation and LUSH were described in a 1973 memo, published in 1974. Colmerauer, with Philippe Roussel, used this dual interpretation of clauses as the basis of Prolog, which was implemented in the summer and autumn of 1972.
The use of Prolog as a practical programming language was given great momentum by the development of a compiler by David Warren in Edinburgh in 1977.
Its development was given a big impetus in the 1980s by its choice for the systems programming language of the Japanese Fifth Generation Project (FGCS). A concurrent logic program is a set of guarded Horn clauses of the form: :H :- G1, …, Gn | B1, …, Bn. The conjunction G1, ...
An initial problem is solved by reducing it to a satisfiable conjunction of constraints. The following constraint logic program represents a toy temporal database of john's history as a teacher: teaches(john, hardware, T) :- 1990 ≤ T, T Here ≤ and are constraint predicates, with their usual intended semantics.
Some early designs of logic programming languages based on linear logic include LO [Andreoli & Pareschi, 1991], Lolli, ACL, and Forum [Miller, 1996].
Some early designs of logic programming languages based on linear logic include LO [Andreoli & Pareschi, 1991], Lolli, ACL, and Forum [Miller, 1996].
AAAI Spring Symposium: What Went Wrong and Why: Lessons from AI Research and Applications 2006: 2–9. Evgeny Dantsin, Thomas , Georg Gottlob, Andrei Voronkov: Complexity and expressive power of logic programming.
The following goal clause queries the database to find out when john both taught logic and was a professor: :- teaches(john, logic, T), rank(john, professor, T). The solution is 2010 ≤ T, T ≤ 2012. Constraint logic programming has been used to solve problems in such fields as civil engineering, mechanical engineering, digital circuit verification, automated timetabling, air traffic control, and finance.
The following goal clause queries the database to find out when john both taught logic and was a professor: :- teaches(john, logic, T), rank(john, professor, T). The solution is 2010 ≤ T, T ≤ 2012. Constraint logic programming has been used to solve problems in such fields as civil engineering, mechanical engineering, digital circuit verification, automated timetabling, air traffic control, and finance.
All text is taken from Wikipedia. Text is available under the Creative Commons Attribution-ShareAlike License .
Page generated on 2021-08-05