182:
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.
348:
135:
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".
254:
318:
267:
417:
352:
171:
247:
481:
831:
693:
192:
837:
240:
1022:
770:
225:
490:
862:
542:
486:
144:
722:
595:
526:
461:
384:
106:
1083:
900:
663:
293:
678:
668:
446:
1062:
1042:
972:
915:
877:
867:
752:
688:
658:
585:
574:
471:
451:
426:
389:
202:
1017:
780:
747:
642:
618:
580:
560:
456:
365:
343:
328:
162:
The development of concurrent logic programming was given an impetus when
Guarded Horn Clause was used to implement
1088:
964:
950:
857:
817:
742:
648:
628:
495:
374:
308:
1057:
822:
732:
712:
698:
167:
1037:
997:
940:
872:
610:
441:
1047:
1027:
968:
955:
935:
762:
499:
403:
361:
179:
1007:
982:
976:
920:
882:
570:
565:
517:
412:
313:
285:
276:
909:
905:
847:
799:
369:
156:
121:
1052:
1032:
992:
794:
653:
522:
509:
263:
224:. Proceedings of the 1981 conference on Functional programming languages and computer architecture.
987:
925:
737:
717:
703:
435:
303:
298:
215:
804:
757:
727:
673:
532:
431:
323:
232:
175:
148:
960:
852:
707:
683:
623:
590:
552:
537:
476:
197:
65:
20:
842:
774:
638:
379:
892:
766:
632:
333:
944:
600:
466:
1077:
930:
152:
24:
812:
143:
The first concurrent logic programming language was the
Relational Language of
75:
Declaratively, guarded Horn clauses are read as ordinary logical implications:
219:
124:
is made to one of the clauses, and execution proceeds with the subgoals
101:
However, procedurally, when there are several clauses whose heads
236:
163:
105:
match a given goal, then all of the clauses are executed in
151:. Later versions of concurrent logic programming include
120:
hold. If the guards of more than one clause hold, then a
170:. The FGCS Project was a $ 400M initiative by Japan's
1006:
891:
793:
609:
551:
508:
411:
402:
342:
284:
275:
221:A relational language for parallel programming
248:
8:
172:Ministry of International Trade and Industry
147:and Steve Gregory, which was an offshoot of
408:
281:
255:
241:
233:
166:, the systems programming language of the
319:Programming in the large and in the small
159:and Ueda's Guarded Horn Clause language.
168:Japanese Fifth Generation Project (FGCS)
193:Concurrent constraint logic programming
23:in which programs are sets of guarded
7:
226:Association for Computing Machinery
174:, begun in 1982, to use massively
14:
109:, checking whether their guards
863:Partitioned global address space
1:
72:is the commitment operator.
390:Uniform Function Call Syntax
203:Nondeterministic programming
17:Concurrent logic programming
858:Parallel programming models
832:Concurrent constraint logic
1105:
951:Metalinguistic abstraction
818:Automatic mutual exclusion
823:Choreographic programming
218:; Gregory, Steve (1981).
873:Relativistic programming
180:artificial intelligence
883:Structured concurrency
268:Comparison by language
1084:Programming paradigms
848:Multitier programming
664:Interface description
264:Programming paradigms
216:Clark, Keith Leonard
988:Self-modifying code
596:Probabilistic logic
527:Functional reactive
482:Expression-oriented
436:Partial application
228:. pp. 171–178.
68:of the clause, and
901:Attribute-oriented
674:List comprehension
619:Algebraic modeling
432:Anonymous function
324:Design by contract
294:Jackson structures
176:parallel computing
1089:Logic programming
1071:
1070:
961:Program synthesis
853:Organic computing
789:
788:
694:Non-English-based
669:Language-oriented
447:Purely functional
398:
397:
198:Logic programming
157:Concurrent Prolog
21:logic programming
1096:
973:by demonstration
878:Service-oriented
868:Process-oriented
843:Macroprogramming
828:Concurrent logic
699:Page description
689:Natural language
659:Grammar-oriented
586:Nondeterministic
575:Constraint logic
477:Point-free style
472:Functional logic
409:
380:Immutable object
299:Block-structured
282:
257:
250:
243:
234:
229:
178:/processing for
134:
122:committed choice
119:
104:
97:
71:
63:
53:The conjunction
49:
19:is a variant of
1104:
1103:
1099:
1098:
1097:
1095:
1094:
1093:
1074:
1073:
1072:
1067:
1009:
1002:
893:Metaprogramming
887:
803:
798:
785:
767:Graph rewriting
605:
581:Inductive logic
561:Abductive logic
547:
504:
467:Dependent types
415:
394:
366:Prototype-based
346:
344:Object-oriented
338:
334:Nested function
329:Invariant-based
271:
261:
214:
211:
189:
141:
133:
129:
125:
118:
114:
110:
102:
95:
91:
87:
83:
79:
69:
62:
58:
54:
47:
43:
39:
35:
31:
12:
11:
5:
1102:
1100:
1092:
1091:
1086:
1076:
1075:
1069:
1068:
1066:
1065:
1060:
1055:
1050:
1045:
1040:
1035:
1030:
1025:
1020:
1014:
1012:
1004:
1003:
1001:
1000:
995:
990:
985:
980:
958:
953:
948:
938:
933:
928:
923:
918:
913:
903:
897:
895:
889:
888:
886:
885:
880:
875:
870:
865:
860:
855:
850:
845:
840:
835:
825:
820:
815:
809:
807:
791:
790:
787:
786:
784:
783:
778:
763:Transformation
760:
755:
750:
745:
740:
735:
730:
725:
720:
715:
710:
701:
696:
691:
686:
681:
676:
671:
666:
661:
656:
651:
649:Differentiable
646:
636:
629:Automata-based
626:
621:
615:
613:
607:
606:
604:
603:
598:
593:
588:
583:
578:
568:
563:
557:
555:
549:
548:
546:
545:
540:
535:
530:
520:
514:
512:
506:
505:
503:
502:
496:Function-level
493:
484:
479:
474:
469:
464:
459:
454:
449:
444:
439:
429:
423:
421:
406:
400:
399:
396:
395:
393:
392:
387:
382:
377:
372:
358:
356:
340:
339:
337:
336:
331:
326:
321:
316:
311:
309:Non-structured
306:
301:
296:
290:
288:
279:
273:
272:
262:
260:
259:
252:
245:
237:
231:
230:
210:
207:
206:
205:
200:
195:
188:
185:
145:Keith L. Clark
140:
137:
131:
127:
116:
112:
99:
98:
93:
89:
85:
81:
64:is called the
60:
56:
51:
50:
45:
41:
37:
33:
13:
10:
9:
6:
4:
3:
2:
1101:
1090:
1087:
1085:
1082:
1081:
1079:
1064:
1061:
1059:
1056:
1054:
1051:
1049:
1046:
1044:
1041:
1039:
1036:
1034:
1033:Data-oriented
1031:
1029:
1026:
1024:
1021:
1019:
1016:
1015:
1013:
1011:
1005:
999:
996:
994:
991:
989:
986:
984:
981:
978:
974:
970:
966:
962:
959:
957:
954:
952:
949:
946:
942:
939:
937:
934:
932:
931:Homoiconicity
929:
927:
924:
922:
919:
917:
914:
911:
907:
904:
902:
899:
898:
896:
894:
890:
884:
881:
879:
876:
874:
871:
869:
866:
864:
861:
859:
856:
854:
851:
849:
846:
844:
841:
839:
838:Concurrent OO
836:
833:
829:
826:
824:
821:
819:
816:
814:
811:
810:
808:
806:
801:
796:
792:
782:
779:
776:
772:
768:
764:
761:
759:
756:
754:
751:
749:
746:
744:
741:
739:
736:
734:
733:Set-theoretic
731:
729:
726:
724:
721:
719:
716:
714:
713:Probabilistic
711:
709:
705:
702:
700:
697:
695:
692:
690:
687:
685:
682:
680:
677:
675:
672:
670:
667:
665:
662:
660:
657:
655:
652:
650:
647:
644:
640:
637:
634:
630:
627:
625:
622:
620:
617:
616:
614:
612:
608:
602:
599:
597:
594:
592:
589:
587:
584:
582:
579:
576:
572:
569:
567:
564:
562:
559:
558:
556:
554:
550:
544:
541:
539:
536:
534:
531:
528:
524:
521:
519:
516:
515:
513:
511:
507:
501:
497:
494:
492:
491:Concatenative
488:
485:
483:
480:
478:
475:
473:
470:
468:
465:
463:
460:
458:
455:
453:
450:
448:
445:
443:
440:
437:
433:
430:
428:
425:
424:
422:
419:
414:
410:
407:
405:
401:
391:
388:
386:
383:
381:
378:
376:
373:
371:
367:
363:
360:
359:
357:
354:
350:
345:
341:
335:
332:
330:
327:
325:
322:
320:
317:
315:
312:
310:
307:
305:
302:
300:
297:
295:
292:
291:
289:
287:
283:
280:
278:
274:
269:
265:
258:
253:
251:
246:
244:
239:
238:
235:
227:
223:
222:
217:
213:
212:
208:
204:
201:
199:
196:
194:
191:
190:
186:
184:
181:
177:
173:
169:
165:
160:
158:
154:
150:
146:
138:
136:
123:
108:
78:
77:
76:
73:
67:
30:
29:
28:
27:of the form:
26:
22:
18:
1038:Event-driven
827:
442:Higher-order
370:Object-based
220:
161:
153:Ehud Shapiro
142:
100:
74:
52:
25:Horn clauses
16:
15:
1048:Intentional
1028:Data-driven
1010:of concerns
969:Inferential
956:Multi-stage
936:Interactive
813:Actor-based
800:distributed
743:Stack-based
543:Synchronous
500:Value-level
487:Applicative
404:Declarative
362:Class-based
92:and … and B
84:and … and G
32:H :- G
1078:Categories
1023:Components
1008:Separation
983:Reflective
977:by example
921:Extensible
795:Concurrent
771:Production
758:Templating
738:Simulation
723:Scientific
643:Spacecraft
571:Constraint
566:Answer set
518:Flow-based
418:comparison
413:Functional
385:Persistent
349:comparison
314:Procedural
286:Structured
277:Imperative
209:References
910:Inductive
906:Automatic
728:Scripting
427:Recursive
149:IC-Prolog
1063:Subjects
1053:Literate
1043:Features
998:Template
993:Symbolic
965:Bayesian
945:Hygienic
805:parallel
684:Modeling
679:Low-code
654:End-user
591:Ontology
523:Reactive
510:Dataflow
187:See also
107:parallel
1018:Aspects
926:Generic
916:Dynamic
775:Pattern
753:Tactile
718:Quantum
708:filters
639:Command
538:Streams
533:Signals
304:Modular
139:History
115:, … , G
59:, … , G
781:Visual
748:System
633:Action
457:Strict
130:, …, B
80:H if G
44:, …, B
36:, …, G
1058:Roles
941:Macro
704:Pipes
624:Array
601:Query
553:Logic
462:GADTs
452:Total
375:Agent
88:and B
66:guard
706:and
353:list
611:DSL
164:KL1
155:'s
40:| B
1080::
975:,
971:,
967:,
773:,
769:,
498:,
489:,
368:,
364:,
351:,
979:)
963:(
947:)
943:(
912:)
908:(
834:)
830:(
802:,
797:,
777:)
765:(
645:)
641:(
635:)
631:(
577:)
573:(
529:)
525:(
438:)
434:(
420:)
416:(
355:)
347:(
270:)
266:(
256:e
249:t
242:v
132:n
128:1
126:B
117:n
113:1
111:G
103:H
96:.
94:n
90:1
86:n
82:1
70:|
61:n
57:1
55:G
48:.
46:n
42:1
38:n
34:1
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.