Skip to content

Latest commit

 

History

History
40 lines (29 loc) · 2.14 KB

README.md

File metadata and controls

40 lines (29 loc) · 2.14 KB

fragment

FRex AGda augMENTation

Requirements: Agda 2.6.1 and Standard Library 1.4

An extensible tactic for the Agda proof assistant, capable of synthesising proofs of algebraic identities. The tactic (and its underlying formalisms) are all --without-K --safe, so it's compatible with a variety of Agda configurations and, most importantly, constructive.

hello_world :  {x y}  (2 + x) + (y + 3) ≡ x + (y + 5)
hello_world = fragment CSemigroupFrex +-csemigroup

The tactic builds on a library supporting the presentation of arbitrary finitary, mono-sorted (first-order) equational-theories and can automatically derive specifications for solvers for their class of models (free extensions). The tactic is compatible with any free extension making it very flexible: if you have an interesting algebraic structure, you can write a solver and immediately leverage the tactic.

At present, we have built-in support for:

  • Semigroups
  • Commutative semigroups
  • ... (more to come)

For some more examples, see src/Fragment/Examples.

For a browsable overview of the interface, see the API documentation.

For a full description see the following:

      Proof Synthesis with Free Extensions in Intensional Type Theory
      Nathan Corbyn
      Master's Thesis 2021
      [bibtex] [pdf]

It's also worth checking out the other libraries developed as part of the Frex Project, and our publications.

Ubuntu build