Home

agda

Agda is a dependently typed functional programming language and interactive proof assistant. It is based on intuitionistic dependent type theory, primarily Martin-Löf type theory with a universe hierarchy, and serves both as a programming language and a formal proof environment.

In Agda, types express propositions and programs correspond to proofs. Terms inhabit types, and type checking

Agda programs are written in source files with the .agda extension. The environment provides interactive development

The language is used in research and education to formalize mathematical proofs, verify algorithms, and experiment

amounts
to
verifying
proofs
or
programs
meet
specifications.
The
core
features
include
dependent
function
types,
inductive
data
types,
records,
modules,
and
a
rich
type
system
with
universes
(Set0,
Set1,
etc.).
The
language
supports
implicit
arguments,
pattern
matching,
and
constructs
for
defining
functions
by
cases,
with
rewrite
rules
to
support
equational
reasoning.
Agda
emphasizes
totality
checking
and
termination,
helping
ensure
that
all
defined
functions
are
well-behaved.
through
editor
integration,
typically
with
Emacs,
and
tooling
for
loading,
editing,
and
checking
definitions.
The
standard
library
supplies
a
large
collection
of
data
structures
and
utilities.
Agda
can
compile
to
other
languages,
notably
Haskell
via
the
MAlonzo
backend,
or
be
used
to
extract
verified
code
for
further
use.
with
type-theoretic
ideas.
It
emphasizes
constructive
proofs
and
explicit
witness
terms,
aligning
with
the
Curry-Howard
correspondence.