Discover Agda, a dependently typed functional programming language and proof assistant based on intuitionistic type theory, used for verified correct-by-construction software and proofs.
Agda is a dependently typed functional programming language and proof assistant developed at Chalmers University of Technology. It has its roots in intuitionistic type theory, which allows building proofs directly into programs. This makes Agda well-suited for developing formally verified, correct-by-construction software.
As a functional language, Agda uses pure functions without side effects as its core paradigm. It also incorporates dependent types, which allow types to depend on values or even other types. This allows expressing rich constraints and proofs in the type system itself, enabling verification of complex properties.
Agda includes an interactive environment for constructing proofs. It leverages the Curry-Howard correspondence between programs and proofs, allowing software and proofs of its correctness to be developed interchangeably. The compiler checks proofs and ensures the total correctness of programs.
While less commonly used in industry than languages like Haskell or OCaml, Agda sees use in academic and research settings for high-assurance software development. Related languages include Coq, Idris, Epigram, and Cayenne. Real-world Agda development has included formally verified compilers, blockchain protocols, and hardware descriptions.