1 { lib, stdenv, fetchFromGitHub, pkg-config, ocamlPackages, opaline }:
3 stdenv.mkDerivation rec {
7 src = fetchFromGitHub {
11 hash = "sha256-GzeEiok5kigcmfqf/K/UxvlKkl55zy0vOyiRZ2HyMiE=";
17 nativeBuildInputs = [ pkg-config opaline ] ++ (with ocamlPackages; [ findlib ocaml ]);
18 buildInputs = with ocamlPackages; [ ocamlgraph ];
20 installTargets = "ott.install";
25 # There is `emacsPackages.ott-mode` for this now.
27 rm -r $out/share/emacs
31 description = "Tool for the working semanticist";
34 Ott is a tool for writing definitions of programming languages and
35 calculi. It takes as input a definition of a language syntax and
36 semantics, in a concise and readable ASCII notation that is close to
37 what one would write in informal mathematics. It generates LaTeX to
38 build a typeset version of the definition, and Coq, HOL, and Isabelle
39 versions of the definition. Additionally, it can be run as a filter,
40 taking a LaTeX/Coq/Isabelle/HOL source file with embedded (symbolic)
41 terms of the defined language, parsing them and replacing them by
44 homepage = "http://www.cl.cam.ac.uk/~pes20/ott";
45 license = lib.licenses.bsd3;
46 maintainers = with lib.maintainers; [ jwiegley ];
47 platforms = lib.platforms.unix;