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 of the form:
:
The conjunction is called the
guard 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, B
1, …, B
n 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, 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 ...
, 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 co ...
, 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 pro ...
*
Nondeterministic programming
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