From 827969ae84ea5d10d0e1c20266e3837c9f907765 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Thu, 13 Oct 2022 23:41:05 +0200 Subject: [PATCH] use KB.IndexAutomaton as rewriting for FPGroups --- src/aut_groups/mcg.jl | 12 +++++++----- src/aut_groups/sautFn.jl | 4 +++- src/types.jl | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/aut_groups/mcg.jl b/src/aut_groups/mcg.jl index 0bb17b2..fff9510 100644 --- a/src/aut_groups/mcg.jl +++ b/src/aut_groups/mcg.jl @@ -51,12 +51,14 @@ function SurfaceGroup(genus::Integer, boundaries::Integer) comms = Word(word) word_rels = [ comms => one(comms) ] - rws = KnuthBendix.RewritingSystem(word_rels, KnuthBendix.RecursivePathOrder(Al)) - KnuthBendix.knuthbendix!(rws) + rws = let R = KnuthBendix.RewritingSystem(word_rels, KnuthBendix.Recursive(Al)) + KnuthBendix.IndexAutomaton(KnuthBendix.knuthbendix(R)) + end elseif boundaries == 1 - S = typeof(one(Word(Int[]))) - word_rels = Pair{S, S}[] - rws = RewritingSystem(word_rels, KnuthBendix.LenLex(Al)) + word_rels = Pair{W,W}[] + rws = let R = RewritingSystem(word_rels, KnuthBendix.LenLex(Al)) + KnuthBendix.IndexAutomaton(KnuthBendix.knuthbendix(R)) + end else throw("Not Implemented") end diff --git a/src/aut_groups/sautFn.jl b/src/aut_groups/sautFn.jl index 4f8c609..fdc37cf 100644 --- a/src/aut_groups/sautFn.jl +++ b/src/aut_groups/sautFn.jl @@ -14,7 +14,9 @@ function SpecialAutomorphismGroup(F::FreeGroup; ordering = KnuthBendix.LenLex, k # the rws is not confluent, let's suppress warning about it KnuthBendix.knuthbendix(rws, KnuthBendix.Settings(; max_rules=max_rules, kwargs...)) end - return AutomorphismGroup(F, S, rws, ntuple(i -> gens(F, i), n)) + + idxA = KnuthBendix.IndexAutomaton(rws) + return AutomorphismGroup(F, S, idxA, ntuple(i -> gens(F, i), n)) end KnuthBendix.alphabet(G::AutomorphismGroup{<:FreeGroup}) = alphabet(rewriting(G)) diff --git a/src/types.jl b/src/types.jl index cb50fe0..5ccd283 100644 --- a/src/types.jl +++ b/src/types.jl @@ -231,7 +231,7 @@ function FPGroup( rws = KnuthBendix.knuthbendix(rws, KnuthBendix.Settings(; kwargs...)) - return FPGroup(G.gens, rels, rws) + return FPGroup(G.gens, rels, KnuthBendix.IndexAutomaton(rws)) end function Base.show(io::IO, ::MIME"text/plain", G::FPGroup)