diff --git a/src/AutGroup.jl b/src/AutGroup.jl index dcbb1e1..fa05877 100644 --- a/src/AutGroup.jl +++ b/src/AutGroup.jl @@ -91,7 +91,7 @@ function change_pow(s::AutSymbol, n::Integer) elseif symbol isa LTransvect return transvection_L(symbol.i, symbol.j, n) elseif symbol isa Identity - return s + return id_autsymbol() else throw(DomainError("Unknown type of AutSymbol: $s")) end diff --git a/src/arithmetic.jl b/src/arithmetic.jl index c7e8c21..f84527d 100644 --- a/src/arithmetic.jl +++ b/src/arithmetic.jl @@ -1,5 +1,5 @@ function Base.inv(W::T) where T<:GWord - length(W) == 0 && return W + length(W) == 0 && return one(W) G = parent(W) w = T([inv(s) for s in Iterators.reverse(syllables(W))]) return setparent!(w, G) diff --git a/test/AutGroup-tests.jl b/test/AutGroup-tests.jl index 50621e2..0b9c658 100644 --- a/test/AutGroup-tests.jl +++ b/test/AutGroup-tests.jl @@ -16,7 +16,8 @@ @test Groups.id_autsymbol() isa Groups.AutSymbol @test inv(Groups.id_autsymbol()) isa Groups.AutSymbol - @test inv(Groups.id_autsymbol()) == Groups.id_autsymbol() + x = Groups.id_autsymbol() + @test inv(x) == Groups.id_autsymbol() end a,b,c,d = gens(FreeGroup(4)) @@ -266,7 +267,7 @@ @test Groups.abelianize(σ^3) == Matrix{Int}(I, N, N) @test Groups.abelianize(σ)^3 == Matrix{Int}(I, N, N) - @test Groups.abelianize(G(Groups.id_autsymbol())) == Matrix{Int}(I, N, N) + @test Groups.abelianize(G(Groups.id_autsymbol())) == Matrix{Int}(I, N, N) function test_homomorphism(S, r) for elts in Iterators.product([[g for g in S] for _ in 1:r]...) diff --git a/test/FreeGroup-tests.jl b/test/FreeGroup-tests.jl index 3a1863f..49f4b82 100644 --- a/test/FreeGroup-tests.jl +++ b/test/FreeGroup-tests.jl @@ -109,6 +109,13 @@ end tt = deepcopy(t) append!(tt, s, inv(t)) @test string(tt) == "t*s*t^-1" + + o = one(t) + o_inv = inv(o) + @test o == o_inv + @test o !== o_inv + Groups.rmul!(o, t) + @test o != o_inv end @testset "reductions" begin