LLMpediaThe first transparent, open encyclopedia generated by LLMs

Agda (programming language)

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: Type theory Hop 5
Expansion Funnel Raw 68 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted68
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
Agda (programming language)
Agda (programming language)
The Agda Community / Miëtek Bak · BSD · source
NameAgda
ParadigmFunctional, dependently typed, proof assistant
DesignerUlf Norell
DeveloperAgda Development Team
First appeared2007
TypingDependent, dynamic checking at compile time
Influenced byMartin-Löf type theory, Haskell, Coq

Agda (programming language) is a dependently typed functional language and interactive proof assistant designed for writing programs and machine-checked proofs. Originating from research in Martin-Löf’s intuitionistic type theory and influenced by implementation techniques from Haskell (programming language), it serves both as a practical programming language and as a platform for formalizing mathematics and verifying properties of software. Agda integrates tactics-free interactive development with a totality checker, enabling formalizations similar to those in Coq, Isabelle/HOL, and Lean (proof assistant).

History

Agda’s roots trace to doctoral work at Chalmers University of Technology and collaborations with researchers at Uppsala University, University of Gothenburg, and University of Nottingham. Early implementations drew on ideas from Per Martin-Löf’s type theory and were contemporaneous with projects at INRIA, Microsoft Research, and Carnegie Mellon University. The language evolved through releases coordinated by the Agda Development Team and contributors from institutions such as University of Cambridge, University of Oxford, Princeton University, and ETH Zurich. Key milestones parallel developments in Coq, the Curry-Howard correspondence community, and advances presented at venues like POPL, ICFP, LICS, and CADE.

Language features

Agda implements a dependently typed, total, pure functional core with pattern matching, modules, and interactive editing support. Its syntax and semantics are informed by Haskell (programming language), Erlang, and research at Bell Labs, while module and namespace facilities resonate with systems from OCaml and Standard ML. Agda supports Unicode identifiers and literate programming styles akin to work at GHC and FPComplete, and its interactive mode integrates with editors like Emacs, Visual Studio Code, and Atom (text editor), paralleling integrations for CoqIDE and Isabelle/jEdit.

Type system and dependent types

Agda’s type system is based on predicative Martin-Löf type theory with universes, inductive families, and dependent pattern matching, comparable to features in Coq and Lean (proof assistant). The system enforces totality via termination checking informed by research from Robert Harper, Conor McBride, and Thorsten Altenkirch, while equality is intensional rather than extensional as discussed by scholars at University of Cambridge and University of Edinburgh. Agda provides inductive-inductive and inductive-recursive constructs influenced by work at MPI-SWS and TU Darmstadt, and its treatment of universes echoes approaches from Homotopy Type Theory initiatives connected to Institute for Advanced Study and Carnegie Mellon University.

Implementation and tooling

The primary implementation is written in Haskell (programming language) and distributed with a compiler and interactive type-checker maintained by the Agda Development Team. Tooling integrates with Emacs, Visual Studio Code, and project systems used in GitHub, GitLab, and Bitbucket-hosted repositories. Continuous integration and packaging practices follow patterns from Debian, Fedora, and NixOS communities, and build tooling interoperates with Stack (Haskell tool) and Cabal (system). Performance and optimization research parallels work at Google Research, Facebook AI Research, and Microsoft Research on proof assistants and theorem provers.

Examples and use cases

Agda is used to formalize mathematics, develop certified algorithms, and prototype languages and compilers, with case studies from groups at Princeton University, University of Cambridge, MIT, and University of Pennsylvania. Examples include verified sorting algorithms inspired by work at ETH Zurich and Ecole Polytechnique Fédérale de Lausanne, encodings of lambda calculi studied at Harvard University and Brown University, and mechanizations of homotopy-theoretic results related to Homotopy Type Theory gatherings at Institute for Advanced Study. Agda has been used in teaching at Carnegie Mellon University, University of Oxford, Uppsala University, and Chalmers University of Technology, and in research projects supported by grants from ERC and national science foundations like those of Sweden, United Kingdom, and United States.

Community and development ecosystem

The ecosystem comprises academic contributors and industry practitioners collaborating via GitHub, mailing lists, and workshops held at conferences such as ICFP, POPL, LICS, and CPP. Educational resources and textbooks referencing Agda include materials from University of Gothenburg, University of Nottingham, and Uppsala University, while community tooling and libraries evolve through efforts with contributors from Microsoft Research, Google Research, and independent developers. Governance and project direction reflect models used by language projects like Rust (programming language), Haskell, and OCaml (programming language), with frequent contributions arising from institutions such as ETH Zurich, Princeton University, and University of Cambridge.

Category:Programming languages Category:Proof assistants Category:Functional programming languages