Paradigm | Functional |
---|---|
Designed by | Ulf Norell; Catarina Coquand (1.0) |
Developer | Chalmers University of Technology |
First appeared | 1.0 – 1999 2.0 – 2007 |
Stable release | 2.7.0
/ August 16, 2024 |
Typing discipline | strong, static, dependent, nominal, manifest, inferred |
Implementation language | Haskell |
OS | Cross-platform |
License | BSD-like[1] |
Filename extensions | .agda , .lagda , .lagda.md , .lagda.rst , .lagda.tex |
Website | wiki |
Influenced by | |
Coq, Epigram, Haskell | |
Influenced | |
Idris |
Agda is a dependently typed functional programming language originally developed by Ulf Norell at Chalmers University of Technology with implementation described in his PhD thesis.[2] The original Agda system was developed at Chalmers by Catarina Coquand in 1999.[3] The current version, originally named Agda 2, is a full rewrite, which should be considered a new language that shares a name and tradition.
Agda is also a proof assistant based on the propositions-as-types paradigm (Curry–Howard correspondence), but unlike Coq, has no separate tactics language, and proofs are written in a functional programming style. The language has ordinary programming constructs such as data types, pattern matching, records, let expressions and modules, and a Haskell-like syntax. The system has Emacs, Atom, and VS Code interfaces[4][5][6] but can also be run in batch processing mode from a command-line interface.
Agda is based on Zhaohui Luo's unified theory of dependent types (UTT),[7] a type theory similar to Martin-Löf type theory.
Agda is named after the Swedish song "Hönan Agda", written by Cornelis Vreeswijk,[8] which is about a hen named Agda. This alludes to the name of the theorem prover Coq, which was named after Thierry Coquand.