macOS
brew install ottlocal Homebrew formula metadata
sudo port install ottMacPorts ports tree · devel/ott/Portfile · source: api.github.com
brew
Tool for writing definitions of programming languages and calculi. Version 0.34 via Homebrew; verified 2026-06-22.
install
brew install ottlocal Homebrew formula metadata
sudo port install ottMacPorts ports tree · devel/ott/Portfile · source: api.github.com
sudo apt install libcoq-ottDebian stable package indexes · libcoq-ott · source: deb.debian.org
nix profile install nixpkgs#ottnixpkgs package indexes · pkgs/by-name/ot/ott/package.nix · source: api.github.com
overview
Tool for writing definitions of programming languages and calculi
history
Ott is a tool and metalanguage for writing definitions of programming languages and calculi. It lets semanticists write syntax, binding structure, and inference rules once, then generate LaTeX, Coq, HOL, Isabelle/HOL, Lem, OCaml, and related artifacts.
Ott was principally developed by Peter Sewell, Francesco Zappa Nardelli, and Scott Owens, with a wider contributor group. Its design was published at ICFP 2007 and then as a Journal of Functional Programming article in January 2010.
The project arose from a specific pain point in programming-language research: full-scale semantic definitions are valuable but hard to keep consistent when they live only in informal mathematics or inside a single proof assistant. Ott's answer was a readable ASCII notation plus sanity checking and code generation into both publication and mechanized-proof formats.
The Ott manual and repository document examples spanning untyped and simply typed lambda calculi, ML polymorphism, POPLmark F<:, TAPL systems, a Leroy-style module system, Lightweight Java, Java module-system work, and a substantial OCaml-light semantics. The JFP paper reports larger case studies including OCaml light with 310 rules and mechanized soundness results.
Ott's adoption is strongest in programming-languages research, where the same source definition can support papers, collaborative editing, and proof assistant artifacts. The 2010 'Ott or Nott' workshop abstract is a useful adoption signal: it presents Ott as part of a working language-design process, not merely as a backend generator.
A typical user writes an .ott source file describing object-language syntax and semantic judgments, then invokes ott with one or more -o outputs such as .tex, .v, .thy, HOL script, Lem, or OCaml files. The tool can also filter embedded terms in LaTeX, Coq, Isabelle/HOL, Lem, or OCaml source.
The generated artifacts reduce drift between the published rules, the parser-level syntax, and the formal definitions used for mechanized reasoning. For package users, the command-line binary is the bridge between a research notation and several proof and documentation ecosystems.
Ott is a rare package that is both a compiler-like CLI and a research infrastructure artifact. Its package value comes from reproducibility: a language-definition source can be checked, regenerated, versioned, and consumed by multiple proof assistants and typesetting workflows.
security posture
generalized runtime or code generation signal.
yellow risk · medium confidence · runtime
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
executables
| Command | Kind | Exposure | Note |
|---|---|---|---|
ott | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
https://github.com/ott-lang/ott
install metadata
| Package key | brew:ott |
|---|---|
| Version | 0.34 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/ott |
| Homepage | https://www.cl.cam.ac.uk/~pes20/ott/ |
| Repository | https://github.com/ott-lang/ott |
| Upstream docs | https://github.com/ott-lang/ott#readme |
| License | BSD-3-Clause |
| Source archive | https://github.com/ott-lang/ott/archive/refs/tags/0.34.tar.gz |
| Last updated | 2026-06-22T14:05:47-07:00 |
| Pulse | updated |
| Build dependencies | gmp, ocaml, opam, pkgconf |
| Bottle | available (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, arm64_ventura, sonoma, ventura, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | ott |
| Version Scheme | 0 |
| Revision | 0 |
| Head Version | HEAD |
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
libcoq-ott 0.34+ds-1+b4
Ott tool (Coq plugin)
https://github.com/ott-lang/ott
sudo apt install libcoq-ottott-tools 0.34+ds-1+b4
Ott tool (executable)
https://github.com/ott-lang/ott
sudo apt install ott-toolsott
nix profile install nixpkgs#ottlibcoq-ott 0.33+ds-2build3
Ott tool (Coq plugin)
https://github.com/ott-lang/ott
sudo apt install libcoq-ottott-tools 0.33+ds-2build3
Ott tool (executable)
https://github.com/ott-lang/ott
sudo apt install ott-toolsott
sudo port install ottsource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.