An Implementation of OBJ2: An Object-Oriented Language for Abstract Program Specification

This paper describes an implementation of a functional and object-oriented programming language called OBJ2. It is a programming language manifestation of a new programming paradigm called parametrization. Parametrization enables programs to be written in as general a form as possible. By choosing suitable parameter values, the generic objects can be tailored to a variety of applications. Theories provide semantic interface requirements of a parametrized object while views formally specify exactly how given objects satisfy given theories. Instantiation mechanisms provide the formal machinery for generating new objects from generic ones. OBJ2 programs are evaluated by interpreting equations as rewrite-rules. The underlying term rewriting system is assumed to have the Church-Rosser and finite termination properties. This implementation was done in Franz Lisp on a Vax 11/750, running Unix.