HOME

TheInfoList



OR:

Concurrent logic programming is a variant of
logic programming Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic prog ...
in which programs are sets of guarded
Horn clauses In mathematical logic and logic programming, a Horn clause is a logical formula of a particular rule-like form which gives it useful properties for use in logic programming, formal specification, and model theory. Horn clauses are named for the log ...
of the form: : The conjunction is called the
guard Guard or guards may refer to: Professional occupations * Bodyguard, who protects an individual from personal assault * Crossing guard, who stops traffic so pedestrians can cross the street * Lifeguard, who rescues people from drowning * Prison ...
of the clause, and is the commitment operator. Declaratively, guarded Horn clauses are read as ordinary logical implications: : However, procedurally, when there are several clauses whose heads match a given goal, then all of the clauses are executed in parallel, checking whether their guards hold. If the guards of more than one clause hold, then a committed choice is made to one of the clauses, and execution proceeds with the subgoals {{mono, B1, …, Bn of the chosen clause. These subgoals can also be executed in parallel. Thus concurrent logic programming implements a form of "don't care nondeterminism", rather than "don't know nondeterminism".


History

The first concurrent logic programming language was the Relational Language of Clark and Gregory, which was an offshoot of IC-Prolog. Later versions of concurrent logic programming include Shapiro's Concurrent Prolog and Ueda's Guarded Horn Clause language. The development of concurrent logic programming was given an impetus when GHC was used to implement
KL1 KL1, or Kernel Language 1 is an experimental AND-parallel version of KL0 developed for the ICOT Fifth Generation Computer project. KL1 is an implementation of Flat GHC (a subset of the Guarded Horn Clauses language by Kazunori Ueda), making ...
, the systems programming language of the Japanese Fifth Generation Project (FGCS). The FGCS Project was a $400M initiative by Japan's
Ministry of International Trade and Industry The was a ministry of the Government of Japan from 1949 to 2001. The MITI was one of the most powerful government agencies in Japan and, at the height of its influence, effectively ran much of Japanese industrial policy, funding research and di ...
, begun in 1982, to use massively parallel computing/processing for artificial intelligence applications. The choice of concurrent logic programming as the “missing link” between the hardware and the applications was influenced by a visit to the FGCS Project in 1982 by
Ehud Shapiro Ehud Shapiro ( he, אהוד שפירא; born 1955) is a multi-disciplinary scientist, artist, entrepreneur and Professor of Computer Science and Biology at the Weizmann Institute of Science. With international reputation, he made fundamental cont ...
, who invented Concurrent Prolog.


See also

*
Concurrent constraint logic programming Concurrent constraint logic programming is a version of constraint logic programming aimed primarily at programming concurrent processes rather than (or in addition to) solving constraint satisfaction problems. Goals in constraint logic programming ...
*
Logic programming Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic prog ...
*
Nondeterministic programming A nondeterministic programming language is a language which can specify, at certain points in the program (called "choice points"), various alternatives for program flow. Unlike an if-then statement, the method of choice between these alternativ ...


References

* Clark, K. L. and Gregory, S. (1981)
A relational language for parallel programming
In Proceedings of the 1981 conference on Functional programming languages and computer architecture (pp. 171-178). ACM. Programming paradigms Logic programming