Skip to content

Commit 8e03a68

Browse files
committed
Repurpose reflection-based monoid solver for groups
1 parent cb4abd5 commit 8e03a68

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

GpdCont/Groups/Solve.agda

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
module GpdCont.Groups.Solve where
2+
3+
open import Agda.Builtin.Reflection using (Term ; TC)
4+
5+
open import Cubical.Foundations.Prelude
6+
open import Cubical.Foundations.Structure
7+
open import Cubical.Data.Nat.Base
8+
open import Cubical.Algebra.Group.Base
9+
open import Cubical.Tactics.MonoidSolver.MonoidExpression using (Expr)
10+
open import Cubical.Tactics.MonoidSolver.Solver using (module Eval) renaming (solve to naiveSolveMonoid)
11+
open import Cubical.Tactics.MonoidSolver.Reflection using (solveMonoid ; module ReflectionSolver)
12+
13+
module _ {ℓ} (G : Group ℓ) where
14+
private
15+
M = Group→Monoid G
16+
17+
naiveSolveGroup : {n : ℕ} (e₁ e₂ : Expr ⟨ M ⟩ n) (v : Eval.Env M n)
18+
(p : Eval.eval M (Eval.normalize M e₁) v ≡ Eval.eval M (Eval.normalize M e₂) v)
19+
Eval.⟦ M ⟧ e₁ v ≡ Eval.⟦ M ⟧ e₂ v
20+
naiveSolveGroup = naiveSolveMonoid M
21+
22+
macro
23+
solveGroup : Term Term TC Unit
24+
solveGroup = ReflectionSolver.solve-macro (quote GroupStr._·_) (quote GroupStr.1g) (quote naiveSolveGroup)

0 commit comments

Comments
 (0)