CafeOBJ is a most advanced formal specification language which inherits many advanced features (e.g. flexible mix-fix syntax,powerful and clear typing system with ordered sorts, parameteric modules and views for instantiating the parameters, and module expressions, etc.) from OBJ (or more exactly OBJ3) algebraic specification language.

CafeOBJ is a language for writing formal (i.e. mathematical) specifications of models for wide varieties of software and systems, and verifying properties of them. CafeOBJ implements equational logic by rewriting and can be used as a powerful interactive theorem proving system. Specifiers can write proof scores also in CafeOBJ and doing proofs by executing the proof scores.

CafeOBJ has state-of-art rigorous logical semantics based on institutions. The CafeOBJ cube shows the structure of the various logics underlying the combination of the various paradigms implemented by the language. Proof scores in CafeOBJ are also based on institution based rigorous semantics, and can be constructed using a complete set of proof rules.


Please use info@cafeobj.org to contact the CafeOBJ Team. Bug reports, issues and proposals can be submitted to our bug tracker at tracker.cafeobj.org.

For improvements of the built-in help systems (command ?), and the reference manual, please use the Reference Manual Wiki.


  • CafeOBJ 1.5.2 released - We have released a new version of CafeOBJ. It includes fixes to the wrapper on Unix/Mac so that it can deal with spaces in paths. Furthermore, the ls command is now supported on Windows (but not on UNC path). The binary builds for 1.5.1 contain already all the fixes, so for now we do not […]
  • CafeOBJ 1.5.1 released - We have released a new version of CafeOBJ. The only fix included in this point release is support for UNC path on Windows. Furthermore, we now provide experimental SBCL based Windows builds. Please see theĀ  for the new releases.
  • QLock Liveness Properties - QLOCK, a variant of Dijkstra’s binary semaphore, is a well known protocol of mutual exclusion, and many implementation and verifications in CafeOBJ are available. I have extended the current proofs of mutual exclusion to cover also fairness, i.e., any agent will eventually enter the queue and eventually go into critical section. Since this requires fairness […]
  • CloudSync - Specification and verification of a simplified cloud synchronization protocol. Arbitrary many PCs can connect to a central cloud, fetch the value from the cloud, compare it with their own value, and update the cloud or their own value depending on which is larger. A detailed explanation can be found in a (part of) a presentation […]
  • CafeOBJ 1.5.0 released - Yesterday we have finally released CafeOBJ 1.5.0. This marks a great step forward in a long development history of this algebraic specification and verification language. To quote from our README: CafeOBJ is a new generation algebraic specification and programming language. As a direct successor of OBJ, it inherits all its features (flexible mix-fix syntax, powerful […]