Skip to content

gallais/agda-fragment

 
 

Repository files navigation

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 full description see the following:

      Proof Synthesis with Free Extensions in Intensional Type Theory (link to come)
      Nathan Corbyn
      Master's Thesis 2020

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

About

Algebraic proof discovery in Agda

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Agda 99.6%
  • Other 0.4%