100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Programming

Agda

Agda programming language

AdvancedLanguage9.3K learners

Agda is a dependently typed functional programming language and proof assistant, primarily used to formally state and machine-check mathematical proofs and program correctness properties.

#Agda#Programming#Language#Advanced#Coq#Idris#Lean#SoftwareDevelopment#Glossary#SkillVeris

Definition

Agda is a dependently typed functional programming language and proof assistant, primarily used to formally state and machine-check mathematical proofs and program correctness properties.

Overview

Agda was developed at Chalmers University of Technology as both a programming language and a tool for interactive theorem proving, built on the Curry-Howard correspondence — the principle that types can represent logical propositions and programs of that type serve as proofs of those propositions. Writing a well-typed Agda program that compiles is, in this sense, equivalent to constructing a valid mathematical proof of the property the type describes. Agda's dependent type system lets types be indexed by values, enabling precise specifications such as "a sorting function that returns a permutation of the input which is provably sorted." Its interactive development environment, most commonly used through Emacs, supports "hole-driven" development, where a programmer leaves placeholders (holes) in an incomplete proof or program and the system reports the exact type still needed at each hole, incrementally guiding the proof to completion. Agda is used primarily in academic research on type theory, formal verification, and programming language theory, and in teaching advanced functional programming and constructive mathematics, rather than in industry software development. It belongs to the same family of dependently typed proof systems as Coq, Idris, and Lean, with each system differing in its underlying type theory, tooling philosophy, and community focus — Agda is particularly known for closely tracking academic type theory research and its constructive-mathematics-oriented community.

Key Features

  • Dependent type system based on the Curry-Howard correspondence
  • Programs double as machine-checked mathematical proofs
  • Interactive, hole-driven proof and program development
  • Strong ties to academic research in type theory and formal verification
  • Support for constructive mathematics and precise formal specifications
  • Emacs-based interactive development environment

Use Cases

Formally verifying properties of algorithms and data structures
Academic research in type theory and formal methods
Teaching constructive mathematics and dependent type theory
Constructing machine-checked mathematical proofs
Exploring the correspondence between programs and logical proofs

Alternatives

Frequently Asked Questions