OBJ3
   HOME

TheInfoList



OR:

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 __NOTOC__ Joseph Amadee Goguen ( ; June 28, 1941 – July 3, 2006) was an American computer scientist. He was professor of Computer Science at the University of California and University of Oxford, and held research positions at IBM and SRI Int ...
in 1976, and further worked on by
Jose Meseguer José Meseguer Guaita is a Spanish computer scientist, and professor at the University of Illinois at Urbana–Champaign. He leads the university's Formal Methods and Declarative Languages Laboratory. Career José Meseguer obtained his PhD in ma ...
.


Overview

It is a family of
declarative Declarative may refer to: * Declarative learning, acquiring information that one can speak about * Declarative memory, one of two types of long term human memory * Declarative programming, a computer programming paradigm * Declarative sentence, a t ...
"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 In computer science, pattern matching is the act of checking a given sequence of tokens for the presence of the constituents of some pattern. In contrast to pattern recognition, the match usually must be exact: "either it will or will not be a ...
modulo equations, E-strategies (user control over
laziness Laziness (also known as indolence or sloth) is emotional disinclination to activity or exertion despite having the ability to act or to exert oneself. It is often used as a pejorative; terms for a person seen to be lazy include " couch potato" ...
), 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 Kumo may refer to: * Kokemäki, ''Kumo'' in Swedish, a municipality of Finland * Kumo (album), ''Kumo'' (album), album released by D'espairsRay in 2000 * Kumo (musician) (born 1965), British musician and composer * Kumo (sculpture), ''Kumo'' (scu ...
, Maude,
OBJ2 OBJ is a programming language 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 (subtyp ...
, 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 Order, ORDER or Orders may refer to: * A socio-political or established or existing order, e.g. World order, Ancien Regime, Pax Britannica * Categorization, the process in which ideas and objects are recognized, differentiated, and understood ...
-sorted
rewriting In mathematics, computer science, and logic, rewriting covers a wide range of methods of replacing subterms of a formula with other terms. Such methods may be achieved by rewriting systems (also known as rewrite systems, rewrite engines, or reduc ...
. OBJ3 is
agent Agent may refer to: Espionage, investigation, and law *, spies or intelligence officers * Law of agency, laws involving a person authorized to act on behalf of another ** Agent of record, a person with a contractual agreement with an insuran ...
-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 Programming languages are used for controlling the behavior of a machine (often a computer). Like natural languages, programming languages follow rules for syntax and semantics. There are thousands of programming languages and new ones are creat ...
*
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 archiveInformation 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