Reference. Frex: Dependently Typed Algebraic Simplification
We present a new design for an algebraic simplification library structured around concepts from universal algebra: theories, models, homomorphisms, and universal properties of free algebras and free extensions of algebras. The library’s dependently typed interface guarantees that both built-in and user-defined simplification modules are terminating, sound, and complete with respect to a well-specified class of equations. We have implemented the design in the Idris 2 and Agda dependently typed programming languages and shown that it supports modular extension to new theories, proof extraction and certification, goal extraction via reflection, and interactive development.
Cite
Cites 67 works (12 here)
With notes (12)
Formal metatheory of second-order abstract syntax fiore-2022-formal
Despite extensive research both on the theoretical and practical fronts, formalising, reasoning about, and implementing languages with variable binding is still a daunting endeavour – repetitive boilerplate and the overly complicated metatheory of capture-avoiding substitution often get in the way of progressing on to the actually interesting properties of a language. Existing developments offer some relief, however at the expense of inconvenient and error-prone term encodings and lack of formal foundations. We present a mathematically-inspired language-formalisation framework implemented in Agda. The system translates the description of a syntax signature with variable-binding operators into an intrinsically-encoded, inductive data type equipped with syntactic operations such as weakening and substitution, along with their correctness properties. The generated metatheory further incorporates metavariables and their associated operation of metasubstitution, which enables second-order equational/rewriting reasoning. The underlying mathematical foundation of the framework – initial algebra semantics – derives compositional interpretations of languages into their models satisfying the semantic substitution lemma by construction.
Formalizing category theory in Agda hu-2021-formalizing
Normalization for Cubical Type Theory sterling_angiuli_2021
We prove normalization for (univalent, Cartesian) cubical type theory, closing the last major open problem in the syntactic metatheory of cubical type theory. Our normalization result is reduction-free, in the sense of yielding a bijection between equivalence classes of terms in context and a tractable language of β/η-normal forms. As corollaries we obtain both decidability of judgmental equality and the injectivity of type constructors.
Leveraging the Information Contained in Theory Presentations carette-2020-leveraging
A theorem prover without an extensive library is much less useful to its potential users. Algebra, the study of algebraic structures, is a core component of such libraries. Algebraic theories also are themselves structured, the study of which was started as Universal Algebra. Various constructions (homomorphism, term algebras, products, etc) and their properties are both universal and constructive. Thus they are ripe for being automated. Unfortunately, current practice still requires library builders to write these by hand. We first highlight specific redundancies in libraries of existing systems. Then we describe a framework for generating these derived concepts from theory definitions. We demonstrate the usefulness of this framework on a test library of 227 theories.
Cubical Agda: A Dependently Typed Programming Language with Univalence and Higher Inductive Types VezzosiMortbergAbel2019
Proof assistants based on dependent type theory provide expressive languages for both programming and proving within the same system. However, all of the major implementations lack powerful extensionality principles for reasoning about equality, such as function and propositional extensionality. These principles are typically added axiomatically which disrupts the constructive properties of these systems. Cubical type theory provides a solution by giving computational meaning to Homotopy Type Theory and Univalent Foundations, in particular to the univalence axiom and higher inductive types. This paper describes an extension of the dependently typed functional programming language Agda with cubical primitives, making it into a full-blown proof assistant with native support for univalence and a general schema of higher inductive types. These new primitives make function and propositional extensionality as well as quotient types directly definable with computational content. Additionally, thanks also to copatterns, bisimilarity is equivalent to equality for coinductive types. This extends Agda with support for a wide range of extensionality principles, without sacrificing type checking and constructivity.
Syntax and Semantics of Quantitative Type Theory atkey-2018-syntax
Partially-static data as free extension of algebras yallop-2018-partially
Partially-static data structures are a well-known technique for improving binding times. However, they are often defined in an ad-hoc manner, without a unifying framework to ensure full use of the equations associated with each operation. We present a foundational view of partially-static data structures as free extensions of algebras for suitable equational theories, i.e. the coproduct of an algebra and a free algebra in the category of algebras and their homomorphisms. By precalculating these free extensions, we construct a high-level library of partially-static data representations for common algebraic structures. We demonstrate our library with common use-cases from the literature: string and list manipulation, linear algebra, and numerical simplification.
Quotient Inductive-Inductive Types altenkirch_etal_2018
Higher inductive types (HITs) in Homotopy Type Theory allow the definition of datatypes which have constructors for equalities over the defined type. HITs generalise quotient types, and allow to define types with non-trivial higher equality types, such as spheres, suspensions and the torus. However, there are also interesting uses of HITs to define types satisfying uniqueness of equality proofs, such as the Cauchy reals, the partiality monad, and the well-typed syntax of type theory. In each of these examples we define several types that depend on each other mutually, i.e. they are inductive-inductive definitions. We call those HITs quotient inductive-inductive types (QIITs). Although there has been recent progress on a general theory of HITs, there is not yet a theoretical foundation for the combination of equality constructors and induction-induction, despite many interesting applications. In the present paper we present a first step towards a semantic definition of QIITs. In particular, we give an initial-algebra semantics. We further derive a section induction principle, stating that every algebra morphism into the algebra in question has a section, which is close to the intuitively expected elimination rules.
I Got Plenty o’ Nuttin’ mcbride-2016-i
Observational equality, now! altenkirch-2007-observational
Normalization and the Yoneda embedding NormalizationAndTheYonedaEmbedding
We show how to solve the word problem for simply typed λβη-calculus by using a few well-known facts about categories of presheaves and the Yoneda embedding. The formal setting for these results is 𝒫-category theory, a version of ordinary category theory where each hom-set is equipped with a partial equivalence relation. The part of 𝒫-category theory we develop here is constructive and thus permits extraction of programs from proofs. It is important to stress that in our method we make no use of traditional proof-theoretic or rewriting techniques. To show the robustness of our method, we give an extended treatment for more general λ-theories in the Appendix.
Normalization by evaluation for typed lambda calculus with coproducts altenkirch_etal_nd
Solves the decision problem for the simply typed lambda calculus with a strong binary sum, or, equivalently, the word problem for free Cartesian closed categories with binary co-products. Our method is based on the semantic technique known as “normalization by evaluation”, and involves inverting the interpretation of the syntax in a suitable sheaf model and, from this, extracting an appropriate unique normal form. There is no rewriting theory involved and the proof is completely constructive, allowing program extraction from the proof.
External (55)
- Observational Equality Meets CIC (2025)
- Agda Standard Library (2024)
- Normalization by evaluation for modal dependent type theory (2023)
- Impredicative Observational Equality (2023)
- Mathematical Components (2022)
- Observational equality: now for good (2022)
- The taming of the rew: a type theory with computational assumptions (2021)
- Proof Synthesis with Free Extensions in Intensional Type Theory. Technical Report (2021)
- Birkhoff's Completeness Theorem for Multi-Sorted Algebras Formalized in Agda (2021)
- The Coq Proof Assistant Reference Manual: Ring and field: solvers for polynomial and rational equations (2021)
- Frex: indexing modulo equations with free extensions (2020)
- Type Theory Unchained: Extending Agda with User-Defined Rewrite Rules (2019)
- Constructing quotient inductive-inductive types (2019)
- Automatically and Efficiently Illustrating Polynomial Equalities in Agda. Technical Report (2019)
- Fast Elaboration for Dependent Type Theories (2019)
- Meta-F $$^\star $$ : Proof Automation with SMT, Tactics, and Metaprograms (2019)
- Formalization of Universal Algebra in Agda (2018)
- Automatic generation of proof terms in dependently typed programming languages (PhD thesis) (2018)
- Normalization by evaluation for sized dependent types (2017)
- Automatically Proving Equivalence by Type-Safe Reflection (2017)
- Type theory in type theory using quotient inductive types (2016)
- Elaborator reflection: extending Idris in Idris (2016)
- Cubical Type Theory: A Constructive Interpretation of the Univalence Axiom (2015)
- Big operators in Agda (2015)
- Big operators in Agda (MSc thesis) (2015)
- Experience Implementing a Performant Category-Theory Library in Coq (2014)
- Reflection without remorse (2014)
- New Equations for Neutral Terms: A Sound and Complete Decision Procedure, Formalized (2013)
- Type Inference, Haskell and Dependent Types (PhD thesis) (2013)
- Involutive Categories and Monoids, with a GNS-Correspondence (2011)
- Categories for the working mathematician (2010)
- Coq Modulo Theory (2010)
- Higher-order constraint simplification in dependent type theory (2009)
- Canonical Big Operators (2008)
- Connecting Gröbner Bases Programs with Coq to do Proofs in Algebra, Geometry and Arithmetics (2008)
- Normalization by Evaluation for Martin-Löf Type Theory with One Universe (2007)
- Normalization by Evaluation for Martin-Löf Type Theory with Typed Equality Judgements (2007)
- Constructing Correct Circuits: Verification of Functional Aspects of Hardware Specifications with Dependent Types (2007)
- Automating Elementary Number-Theoretic Proofs Using Gröbner Bases (2007)
- Discrete Lawvere theories and computational effects (2006)
- Epigram Reloaded: A Standalone Typechecker for ETT (2005)
- Proving Equalities in a Commutative Ring Done Right in Coq (2005)
- Discrete Lawvere Theories (2005)
- An inverse of the evaluation functional for typed lambda -calculus (2002)
- On universes in type theory (1998)
- Using reflection to build efficient and certified decision procedures (1997)
- Intuitionistic model constructions and normalization proofs (1997)
- Extensional Constructs in Intensional Type Theory (1997)
- Categorical reconstruction of a reduction free normalization proof (1995)
- Extracting a Proof of Coherence for Monoidal Categories from a Proof of Normalization for Monoids (1995)
- Extensional concepts in intensional type theory (PhD thesis) (1995)
- Unification under a mixed prefix (1992)
- A Course in Universal Algebra (1981)
- An Intuitionistic Theory of Types: Predicative Part (1975)
- Foundations of Constructive Analysis (1967)