Concurrent logic programming is a variant of
logic programming
Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical form, representing knowledge about some problem domain. Computation is performed by applyin ...
designed for
parallel computing
Parallel computing is a type of computing, computation in which many calculations or Process (computing), processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. ...
in which programs are sets of guarded
Horn clauses 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 gu ...
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 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
Keith L. Clark and Steve Gregory, which was an offshoot of
IC-Prolog. Later versions of concurrent logic programming include
Ehud Shapiro's
Concurrent Prolog and Ueda's Guarded Horn Clause language.
The development of concurrent logic programming was given an impetus when Guarded Horn Clause 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 (government department), 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 industri ...
, begun in 1982, to use massively
parallel computing
Parallel computing is a type of computing, computation in which many calculations or Process (computing), processes are carried out simultaneously. Large problems can often be divided into smaller ones, which can then be solved at the same time. ...
/processing for
artificial intelligence
Artificial intelligence (AI) is the capability of computer, computational systems to perform tasks typically associated with human intelligence, such as learning, reasoning, problem-solving, perception, and decision-making. It is a field of re ...
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, who invented
Concurrent Prolog.
See also
*
Concurrent constraint logic programming
*
Logic programming
Logic programming is a programming, database and knowledge representation paradigm based on formal logic. A logic program is a set of sentences in logical form, representing knowledge about some problem domain. Computation is performed by applyin ...
*
Nondeterministic programming
A nondeterministic programming language is a programming language, language which can specify, at certain points in the Computer program, program (called "choice points"), various alternatives for Control flow, program flow. Unlike an Conditional ...
References
*
{{Programming paradigms navbox
Programming paradigms
Logic programming
*
Parallel computing