Agda: A dependently typed functional programming language and proof assistant

[ dependent-types, library, program ] [ Propose Tags ]

Agda is a dependently typed functional programming language: It has inductive families, which are similar to Haskell's GADTs, but they can be indexed by values and not just types. It also has parameterised modules, mixfix operators, Unicode characters, and an interactive Emacs interface (the type checker can assist in the development of your code).

Agda is also a proof assistant: It is an interactive system for writing and checking proofs. Agda is based on intuitionistic type theory, a foundational system for constructive mathematics developed by the Swedish logician Per Martin-Löf. It has many similarities with other proof assistants based on dependent types, such as Coq, Epigram and NuPRL.

This package includes both a command-line program (agda) and an Emacs mode. If you want to use the Emacs mode you can set it up by running agda-mode setup (see the README).

Note that the Agda package does not follow the package versioning policy, because it is not intended to be used by third-party packages.

Flags

NameDescriptionDefaultType
cpphs

DisabledManual
debug

Enable debugging features that may slow Agda down.

DisabledManual
enable-cluster-counting

Enable the --count-clusters flag. (If enable-cluster-counting is False, then the --count-clusters flag triggers an error message.)

DisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Maintainer's Corner

For package maintainers and hackage trustees

[back to package description]

Agda 2

Note that this README is only about Agda, not its standard library. See the Agda Wiki for information about the library.

Hacking on Agda

Head to HACKING