The Oz Documentation

Important Notice

The successor of DFKI Oz 1 is Mozart. Mozart is a much improved system with respect to features, tools, and efficiency. We strongly encourage you to consider Mozart for using and downloading rather than Oz 1. Oz 1 is still available as documentation how Oz evolved and for those interested in an ultraconcurrent programming language.   Mozart

The Oz documentation consists of several documents, some of which are still in draft version (marked with *).

Getting Started

Carrying On

Reference Manuals


An Oz Primer

Gert Smolka

This document is a first introduction to programming in Oz. It is mostly written as a hands-on tutorial animating the reader to interactively experiment with the DFKI Oz system.

Oz is a concurrent constraint programming language designed for applications that require complex symbolic computations, organization into multiple agents, and soft real-time control. It is based on a new computation model providing a uniform foundation for higher-order functional programming, constraint logic programming, and concurrent objects with multiple inheritance. From functional languages Oz inherits full compositionality, and from logic languages Oz inherits logic variables and constraints (including feature and finite domain constraints). Search in Oz is encapsulated (no backtracking) and includes one, best and all solution strategies.

DFKI Oz is an interactive implementation of Oz featuring a programming interface based on GNU Emacs, a concurrent browser, an object-oriented interface to Tcl/Tk, powerful interoperability features (sockets, C, C++), an incremental compiler, a garbage collector, and support for stand-alone applications. Performance is competitive with commercial Prolog and Lisp systems. DFKI Oz is available for many platforms running Unix/X, including Sparcs and 486 PCs.

Postscript file An Oz Primer.


Constraint Programming in Oz

Tobias Müller, Konstantin Popow, Christian Schulte, Jörg Würtz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. This report gives a tutorial introduction to constraint programming in Oz. We discuss finite domain constraints, record constraints, and search. We show along many examples how constraints and search may be combined to solve constraint problems elegantly and efficiently. The report contains full descriptions of the finite domain and record modules and the semantics of finite domain expressions.

Postscript file Constraint Programming in Oz.


Window Programming in DFKI Oz

Michael Mehl

This paper describes how to do window programming in DFKI Oz. The DFKI Oz window interface is based on the Tk toolkit which in turn is based on the script language Tcl. It provides a high level abstraction of Tk widgets allowing for object-oriented and concurrent window programming. A generic translation scheme from Oz values to Tcl/Tk commands provides for minimality and flexibility on the Oz side.

The Tcl/Tk interface is implemented in Oz using the open programming facilities and is an example of how to connect an external and sequential agent to Oz.

Postscript file Window Programming in DFKI Oz.


Programming in Oz

Martin Henz, Martin Müller

This report gives a tutorial introduction to the basic programming paradigms in Oz. Oz is a concurrent language providing for functional, object-oriented, and constraint programming. We concentrate on functional and object-oriented programming and discuss issues of concurrency.

Postscript file Programming in Oz.


Open Programming in DFKI Oz

Christian Schulte

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. This paper shows how to program open applications in the DFKI Oz System.

Open applications require access to the rest of the computational world by means of input and output of data. This document describes how the DFKI Oz system allows to exchange data with the underlying Unix operating system.

We explain by examples, how to use the high-level object-oriented functionality for files, sockets, and processes. A reference part for the presented functionality is included.

Postscript file Open Programming in DFKI Oz.
HTML file Open Programming in DFKI Oz.


DFKI Oz Demos

Martin Müller, Tobias Müller, Christian Schulte, Ralf Treinen, Jörg Würtz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. This document describes a number of DFKI Oz demo applications chosen from domains Oz has been designed for.

The demos cover important aspects as concurrent programming, constraint programming, real-time programming, multi agent systems, and graphical user interfaces.

Postscript file DFKI Oz Demos.


DFKI Oz User's Manual

Michael Mehl, Tobias Müller, Konstantin Popow, Ralf Scheidhauer, Christian Schulte

DFKI Oz is an interactive implementation of Oz, a high-level programming language designed for concurrent symbolic computation. DFKI Oz features a programming interface based on GNU Emacs, a concurrent browser, an object-oriented interface to Tcl/Tk, powerful interoperability features (sockets, C, C++), an incremental compiler, a garbage collector, and support for stand-alone applications. Performance is competitive with commercial Prolog and Lisp systems. DFKI Oz is available for many platforms running Unix/X, including Sun SPARC systems and 80x86 PCs running Linux.

This document describes DFKI Oz from the user's perspective, giving information about the programming environment, efficiency issues, stand-alone applications, the interface to C and C++, and the installation of the system.

This User's Manual corresponds to release 1.1 of the DFKI Oz system.

Postscript file DFKI Oz User's Manual.


The Oz Standard Modules

Martin Henz, Martin Müller, Christian Schulte, Jörg Würtz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. The Oz Standard Modules are part of the Oz language specification and contain procedures that are made generally available to the programmer. A thorough knowledge of the Oz Standard Modules is highly recommended for effective programming in Oz.

The Oz Standard Modules provide the basic operations on the Oz values and a set of procedures whose use makes for more elegant and readable programs. They provide high-level access to the search combinator, to programming with finite domain constraints, to programming with threads, to real-time programming and to data structures such as arrays and dictionaries.

Postscript file The Oz Standard Modules.
HTML file The Oz Standard Modules.


The Oz Notation

Martin Henz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. This report defines how Oz program text is transformed into a Kernel Oz program. Kernel Oz has been designed to be the base for a formal definition of Oz, and therefore to be minimal in the number of syntactic constructs. Technically, Kernel Oz is able to express a wide range of programming styles, including functional and object-oriented programming. Being a purely relational language, however, Kernel Oz does not provide easy notational access to programming methods from functional and object-oriented programming, making it hard to fully exploit the capacities of the language.

It is such ergonomic considerations that lead to the development of the Oz Notation, where syntactic extensions provide convenient constructs for functional and object-oriented programming. The semantics of these extensions is defined in this document by their stepwise translation to Kernel Oz.

Postscript file The Oz Notation.


The Definition of Kernel Oz

Gert Smolka

Oz is a concurrent language providing for functional, object-oriented, and constraint programming. This paper defines Kernel Oz, a semantically complete sublanguage of Oz. It was an important design requirement that Oz be definable by reduction to a lean kernel language. The definition of Kernel Oz introduces three essential abstractions: the Oz universe, the Oz calculus, and the actor model. The Oz universe is a first-order structure defining the values and constraints Oz computes with. The Oz calculus models computation in Oz as rewriting of a class of expressions modulo a structural congruence. The actor model is the informal computation model underlying Oz. It introduces notions like computation spaces, actors, blackboards, and threads.

Postscript file The Definition of Kernel Oz.


Tips on Oz

Martin Henz, Martin Müller, Jörg Würtz

Oz is a concurrent language providing for functional, object-oriented, and constraint programming: a truly multiparadigm language. These paradigms are supported by a notationally minimal kernel language, which is, however, due to its verboseness not suitable for real programming. It was a crucial design decision to provide syntactic support for these programming paradigms at the user language level.

A drawback of this approach is the notational complexity of the resulting language. This document gives a brief introduction to the programming concepts of Oz from their notational point of view. It presents the syntactic constructs of Oz by means of concise examples and aims at being a quick help for Oz programmers in case of doubt.

Postscript file Tips on Oz.