OBJ is a
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
family introduced by
Joseph Goguen in 1976, and further worked on by
Jose Meseguer.
Overview
It is a family of
declarative "ultra high-level" languages. It features
abstract types,
generic modules,
subsorts (subtypes with
multiple inheritance
Multiple inheritance is a feature of some object-oriented computer programming languages in which an object or class can inherit features from more than one parent object or parent class. It is distinct from single inheritance, where an object ...
),
pattern-matching modulo equations, E-strategies (user control over
laziness), module expressions (for combining modules), theories and views (for describing
module interfaces) for the massively parallel RRM (
rewrite rule machine).
Members of the OBJ family of languages include
CafeOBJ,
Eqlog,
FOOPS,
Kumo,
Maude,
OBJ2, and
OBJ3.
The OBJ family
/ref>
OBJ2
OBJ2 is a programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
with Clear-like parametrised modules and a functional system based on equations.
OBJ3
OBJ3 is a version of OBJ based on order-sorted rewriting. OBJ3 is agent-oriented and runs on Kyoto Common Lisp
Kyoto Common Lisp (KCL) is an implementation of Common Lisp by Taichi Yuasa and Masami Hagiya, written in C to run under Unix-like operating systems. KCL is compiled to ANSI C. It conforms to Common Lisp as described in the 1984 first edit ...
AKCL.
See also
* Automated theorem proving
Automated theorem proving (also known as ATP or automated deduction) is a subfield of automated reasoning and mathematical logic dealing with proving mathematical theorems by computer programs. Automated reasoning over mathematical proof was a majo ...
* Comparison of programming languages
* Formal methods
In computer science, formal methods are mathematics, mathematically rigorous techniques for the formal specification, specification, development, Program analysis, analysis, and formal verification, verification of software and computer hardware, ...
References
* J. A. Goguen
Higher-Order Functions Considered Unnecessary for Higher-Order Programming
In ''Research Topics in Functional Programming'' (June 1990). pp. 309–351.
*"Principles of OBJ2", K. Futatsugi et al., 12th POPL, ACM 1985, pp. 52–66.
*
External links
The OBJ archive
Information and OBJ3 manual
PostScript
PostScript (PS) is a page description language and dynamically typed, stack-based programming language. It is most commonly used in the electronic publishing and desktop publishing realm, but as a Turing complete programming language, it c ...
format
Academic programming languages
Functional languages
Logic in computer science
Formal specification languages
Theorem proving software systems
Term-rewriting programming languages
{{compu-lang-stub