Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
The art of Prolog: advanced programming techniques
The art of Prolog: advanced programming techniques
ACM Turing Award lectures: the first twenty years (1966-1985)
ACM Turing Award lectures: the first twenty years (1966-1985)
Proceedings of the 4th conference on Logic programming '85
PARLOG: the language and its applications
Volume II: Parallel Languages on PARLE: Parallel Architectures and Languages Europe
Common LISP: the language
Computing with logic: logic programming with Prolog
Computing with logic: logic programming with Prolog
Communications of the ACM
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
A useful extension to Prolog's definite clause grammar notation
ACM SIGPLAN Notices
Programming languages for distributed computing systems
ACM Computing Surveys (CSUR)
The family of concurrent logic programming languages
ACM Computing Surveys (CSUR)
Kernel Andorra Prolog and its computation model
Logic programming
Concurrent constraint programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Andorra I: a parallel Prolog system that transparently exploits both And-and or-parallelism
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
ACM SIGPLAN Notices - Haskell special issue
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent constraint programming
Concurrent constraint programming
HILOG: a foundation for higher-order logic programming
Journal of Logic Programming
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A survey of logic programming-based object-oriented languages
Research directions in concurrent object-oriented programming
Ports for objects in concurrent logic programs
Research directions in concurrent object-oriented programming
Handbook of logic in artificial intelligence and logic programming
Handbook of logic in artificial intelligence and logic programming
Encapsulated search for higher-order concurrent constraint programming
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
A unified computation model for functional and logic programming
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Pizza into Java: translating theory into practice
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mobile objects in distributed Oz
ACM Transactions on Programming Languages and Systems (TOPLAS)
Objects for concurrent constraint programming
Objects for concurrent constraint programming
Objective ML: an effective object-oriented extension to ML
Theory and Practice of Object Systems - Third workshop on foundations of object-oriented languages (FOOL 3)
Programming languages for distributed applications
New Generation Computing
The Java programming language (2nd ed.)
The Java programming language (2nd ed.)
The OPL optimization programming language
The OPL optimization programming language
The functional approach to programming
The functional approach to programming
Efficient logic variables for distributed computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Logic programming in Oz with Mozart
Proceedings of the 1999 international conference on Logic programming
CLAIRE: combining sets, search and rules to better express algorithms
Proceedings of the 1999 international conference on Logic programming
Comparing trailing and copying for constraint programming
Proceedings of the 1999 international conference on Logic programming
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Coordination languages and their significance
Communications of the ACM
Implicit parallel programming in pH
Implicit parallel programming in pH
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
The Haskell: The Craft of Functional Programming
The Haskell: The Craft of Functional Programming
Multiparadigm Programming in Leda
Multiparadigm Programming in Leda
Prolog++: The Power of Object-Oriented and Logic Programming
Prolog++: The Power of Object-Oriented and Logic Programming
Software Engineering
Concurrent PROLOG: Collected Papers
Concurrent PROLOG: Collected Papers
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
The Definition of Standard ML
Encapsulated Search and Constraint Programming in Oz
PPCP '94 Proceedings of the Second International Workshop on Principles and Practice of Constraint Programming
PLILPS '95 Proceedings of the 7th International Symposium on Programming Languages: Implementations, Logics and Programs
Integrating Efficient Records into Concurrent Constraint Programming
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
A Meta-Heuristic Factory for Vehicle Routing Problems
CP '99 Proceedings of the 5th International Conference on Principles and Practice of Constraint Programming
Concepts, Techniques, and Models of Computer Programming
Concepts, Techniques, and Models of Computer Programming
Propagation Completeness of Reactive Constraints
ICLP '02 Proceedings of the 18th International Conference on Logic Programming
Towards High-Level Programming for Distributed Problem Solving
IAT '06 Proceedings of the IEEE/WIC/ACM international conference on Intelligent Agent Technology
A new generic scheme for functional logic programming with constraints
Higher-Order and Symbolic Computation
A Framework for Timed Concurrent Constraint Programming with External Functions
Electronic Notes in Theoretical Computer Science (ENTCS)
Constraint functional logic programming over finite domains
Theory and Practice of Logic Programming
Local consistency for extended CSPs
Theoretical Computer Science
Communicating sequential processes for distributed constraint satisfaction
Information Sciences: an International Journal
Closures and modules within linear logic concurrent constraint programming
FSTTCS'07 Proceedings of the 27th international conference on Foundations of software technology and theoretical computer science
Grammatical error simulation for computer-assisted language learning
Knowledge-Based Systems
Logic Java: combining object-oriented and logic programming
WFLP'11 Proceedings of the 20th international conference on Functional and constraint logic programming
FDCC: a combined approach for solving constraints over finite domains and arrays
CPAIOR'12 Proceedings of the 9th international conference on Integration of AI and OR Techniques in Constraint Programming for Combinatorial Optimization Problems
Improving the performance of FD constraint solving in a CFLP system
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Hi-index | 0.02 |
Oz is a multiparadigm language that supports logic programming as one of its major paradigms. A multiparadigm language is designed to support different programming paradigms (logic, functional, constraint, object-oriented, sequential, concurrent, etc.) with equal ease. This paper has two goals: to give a tutorial of logic programming in Oz; and to show how logic programming fits naturally into the wider context of multiparadigm programming. Our experience shows that there are two classes of problems, which we call algorithmic and search problems, for which logic programming can help formulate practical solutions. Algorithmic problems have known efficient algorithms. Search problems do not have known efficient algorithms but can be solved with search. The Oz support for logic programming targets these two problem classes specifically, using the concepts needed for each. This is in contrast to the Prolog approach, which targets both classes with one set of concepts, which results in less than optimal support for each class. We give examples that can be run interactively on the Mozart system, which implements Oz. To explain the essential difference between algorithmic and search programs, we define the Oz execution model. This model subsumes both concurrent logic programming (committed-choice-style) and search-based logic programming (Prolog-style). Furthermore, as consequences of its multiparadigm nature, the model supports new abilities such as first-class top levels, deep guards, active objects, and sophisticated control of the search process. Instead of Horn clause syntax, Oz has a simple, fully compositional, higher-order syntax that accommodates the abilities of the language. We give a brief history of Oz that traces the development of its main ideas and we summarize the lessons learned from this work. Finally, we give many entry points into the Oz literature.