PARLOG: parallel programming in logic
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
Login: A logic programming language with built-in inheritance
Journal of Logic Programming
Concurrent Prolog: A Progress Report
Computer
Proceedings of the 4th conference on Logic programming '85
The family of concurrent logic programming languages
ACM Computing Surveys (CSUR)
Concurrent constraint programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Design of the kernel language for the parallel inference machine
The Computer Journal - On concurrent logic programming
Janus: a step towards distributed constraint programming
Proceedings of the 1990 North American conference on Logic programming
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
Communications of the ACM
Parallel destructive updating in strict functional languages
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Message-oriented parallel implementation of Moded Flat GHC
Selected papers of international conference on Fifth generation computer systems 92
Moded flat GHC and its message-oriented implementation technique
New Generation Computing
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
&pgr;-calculus, internal mobility, and agent-passing calculi
TAPSOFT '95 Selected papers from the 6th international joint conference on Theory and practice of software development
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursion and dynamic data-structures in bounded space: towards embedded ML programming
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Compile-time memory reuse in logic programming languages through update in place
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Kima: An Automated Error Correction System for Concurrent Logic Programs
Automated Software Engineering
Experiences with Strong Moding in Concurrent Logic/Constraint Programming
PSLS '95 Proceedings of the International Workshop on Parallel Symbolic Languages and Systems
Constraints for Free in Concurrent Computation
ACSC '95 Proceedings of the 1995 Asian Computing Science Conference on Algorithms, Concurrency and Knowledge
An Object Calculus for Asynchronous Communication
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
A Portable and Efficient Implementation of KL1
PLILP '94 Proceedings of the 6th International Symposium on Programming Language Implementation and Logic Programming
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
CP '98 Proceedings of the 4th International Conference on Principles and Practice of Constraint Programming
A Module Based Analysis for Memory Reuse in Mercury
CL '00 Proceedings of the First International Conference on Computational Logic
A Foundation for Higher-order Concurrent Constraint Programming
CCL '94 Proceedings of the First International Conference on Constraints in Computational Logics
Types and Subtypes for Client-Server Interactions
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Typed memory management
Encoding Distributed Process Calculi into LMNtal
Electronic Notes in Theoretical Computer Science (ENTCS)
LMNtal as a hierarchical logic programming language
Theoretical Computer Science
Fractional Ownerships for Safe Memory Deallocation
APLAS '09 Proceedings of the 7th Asian Symposium on Programming Languages and Systems
LMNtal: a language model with links and membranes
WMC'04 Proceedings of the 5th international conference on Membrane Computing
From the π-calculus to flat GHC
Proceedings of the 14th symposium on Principles and practice of declarative programming
Type-based safe resource deallocation for shared-memory concurrency
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
The use of types to deal with access capabilities of program entities is becoming increasingly popular.In concurrent logic programming, the first attempt was made in Moded Flat GHC in 1990, which gave polarity structures (modes) to every variable occurrence and every predicate argument. Strong moding turned out to play fundamental r么les in programming, implementation and the in-depthunderstanding of constraint-based concurrent computation. The moding principle guarantees that each variable is written only once and encourages capability-conscious programming. Furthermore, it gives less generic modes to programs that discard or duplicate data, thus providing the view of "data as resources." A simple linearity system built upon the mode system distinguishes variables read only once from those read possibly many times, enabling compile-time garbage collection. Compared to linear types studied in other programming paradigms, the primary issue in constraint-based concurrency has been to deal with logical variables and highly non-strict data structures they induce.In this paper, we put our resource-consciousness one step forward and consider a class of 'ecological' programs which recycle or return all the resources given to them while allowing concurrent reading of data structures via controlled aliasing. This completely recyclic subset enforces us to think more about resources, but the resulting programs enjoy high symmetry which we believe has more than aesthetic implications to our programming practice in general.The type system supporting recyclic concurrent programming gives a [-1, +1] capability to eacho ccurrence of variable and function symbols (constructors), where positive/negative values mean read/write capabilities, respectively, and fractions mean non-exclusive read/write paths. The capabilities are intended to be statically checked or reconstructed so that one can tell the polarity and exclusiveness of each piece of information handled by concurrent processes. The capability type system refines and integrates the mode system and the linearity system for Moded Flat GHC. Its arithmetic formulation contributes to the simplicity.The execution of a recyclic program proceeds so that every variable has zero-sum capability and the resources (i.e., constructors weighted by their capabilities) a process absorbs match the resources it emits. Constructors accessed by a process withan exclusive read capability can be reused for other purposes.The first half of this paper is devoted to a tutorial introduction to constraint-based concurrency in the hope that it will encourage crossfertilization of different concurrency formalisms.