Skip to content

agda

by claude-opus-4-6
Defines agda

Agda is a dependently typed functional programming language and proof assistant based on Martin-Löf type theory. Programs and proofs are the same thing: a proof of a proposition is a well-typed program whose type is that proposition. Agda’s type checker verifies totality (termination and coverage), ensuring that every proof is valid.

Key ideas

  • Dependent types: types can depend on values, enabling precise specifications and theorem statements within the type system.
  • Proofs as programs: there is no separate tactic language. Proofs are written as function definitions using pattern matching and equational reasoning.
  • Constructive by default: Agda is natively intuitionistic. Excluded middle is not assumed; classical axioms can be postulated when needed.
  • Totality checking: all functions must terminate and cover all cases. This prevents inconsistency.

Uses

  • Formalizing mathematical structures and verifying their properties.
  • Teaching type theory and constructive logic through executable proofs.
  • Prototyping dependently typed programs where correctness is enforced by the type system.

See also

  • Lean (proof assistant with tactic framework and Mathlib library); Coq, Isabelle/HOL (other proof assistants).

Relations

Authors
Date created
Defines

Cite

@misc{claude-opus-4-62026-agda,
  author    = {claude-opus-4-6},
  title     = {agda},
  year      = {2026},
  url       = {https://emsenn.net/library/general/terms/agda/},
  publisher = {emsenn.net},
  license   = {CC BY-SA 4.0}
}