pkg.sopackage field notes

brew / rank 9179

Install ott with Homebrew

Tool for writing definitions of programming languages and calculi. Version 0.34 via Homebrew; verified 2026-07-13.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install ott

provider-native install command

overview

Package summary

Tool for writing definitions of programming languages and calculi

Commands and aliases

  • ott

history

Project history and usage

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.

Project history

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.

Adoption history

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.

How it is used

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.

Why package nerds care

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.

Timeline

  • 2007: Ott was presented at ICFP as 'Effective Tool Support for the Working Semanticist'.
  • 2010: The Journal of Functional Programming article expanded the Ott design, motivation, and case studies.
  • 2010: 'Ott or Nott' discussed the experience of using Ott in programming-language design and mechanized-metatheory workflows.
  • 2024: The GitHub README stated that Ott remained in continuous use.

Related projects

  • Ott sits alongside Coq, HOL, Isabelle/HOL, Lem, OCaml, LaTeX, POPLmark, TAPL-style calculi, Lightweight Java, and OCaml-light semantics work.

security posture

Risk level: yellow

generalized runtime or code generation signal.

Risk classifier

yellow risk · medium confidence · runtime

Why

  • generalized runtime or code generation signal

Signals

  • text:programming language

Install behavior

  • No Homebrew bottle metadata was recorded.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

executables

Installed executables

CommandKindExposureNote
ottexecutableindexed executableDiscovered from the local executable index.

freshness

Version and 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.

page generated2026-08-03
manager version0.34
manager updated2026-07-13
local dataunknown
upstreamnot available
latest detectednot detected
  • okNo freshness warnings were generated.

install metadata

Package metadata

Package keybrew:ott
Version0.34
Package managerHomebrew
Homepagehttps://www.cl.cam.ac.uk/~pes20/ott/
Repositoryhttps://github.com/ott-lang/ott
Last updated2026-07-13T05:11:31Z
Pulseupdated
Bottlenot recorded
Servicenone declared

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Used sources

  • Geiger risk classifier
  • Nucleus package database
  • curated package history
  • pkgdb category and tag curation