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.3 released - We have released a new version of CafeOBJ, which incorporates besides other fixes the following changes: interpreter functions ‘describe module tree’ (new) – prints out module importing structure ‘show modules’ – does not print out hidden modules new abbreviations: tr, ctr, pd, pds, bpd, bpds (for trans, ctrans, pred, preds, bpred, bpreds, respectively) new meta […]
  • Tutorial: First steps in CafeOBJ - This tutorial will guide you through starting the CafeOBJ interpreter, and some simple calculations. We will also give a very short introduction to the logic background of CafeOBJ, and the basic structure of the language.
  • 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 […]