mirror of
https://github.com/kalmarek/Groups.jl.git
synced 2024-12-01 01:25:27 +01:00
rename matrix_repr to simply matrix
This commit is contained in:
parent
b7a6f4e952
commit
f096a869b8
@ -53,7 +53,7 @@ function Groups._abelianize(
|
|||||||
ab = Groups.Homomorphism(Groups._abelianize, source, SlN, check=false)
|
ab = Groups.Homomorphism(Groups._abelianize, source, SlN, check=false)
|
||||||
|
|
||||||
matrix_spn_map = let S = gens(target)
|
matrix_spn_map = let S = gens(target)
|
||||||
Dict(MatrixGroups.matrix_repr(g) => word(g) for g in union(S, inv.(S)))
|
Dict(MatrixGroups.matrix(g) => word(g) for g in union(S, inv.(S)))
|
||||||
end
|
end
|
||||||
|
|
||||||
# renumeration:
|
# renumeration:
|
||||||
@ -63,7 +63,7 @@ function Groups._abelianize(
|
|||||||
p = [reverse(2:2:N); reverse(1:2:N)]
|
p = [reverse(2:2:N); reverse(1:2:N)]
|
||||||
|
|
||||||
g = source([i])
|
g = source([i])
|
||||||
Mg = MatrixGroups.matrix_repr(ab(g))[p, p]
|
Mg = MatrixGroups.matrix(ab(g))[p, p]
|
||||||
|
|
||||||
return matrix_spn_map[Mg]
|
return matrix_spn_map[Mg]
|
||||||
end
|
end
|
||||||
|
@ -2,12 +2,12 @@ abstract type MatrixGroup{N,T} <: Groups.AbstractFPGroup end
|
|||||||
const MatrixGroupElement{N,T} = Groups.AbstractFPGroupElement{<:MatrixGroup{N,T}}
|
const MatrixGroupElement{N,T} = Groups.AbstractFPGroupElement{<:MatrixGroup{N,T}}
|
||||||
|
|
||||||
Base.isone(g::MatrixGroupElement{N,T}) where {N,T} =
|
Base.isone(g::MatrixGroupElement{N,T}) where {N,T} =
|
||||||
isone(word(g)) || matrix_repr(g) == LinearAlgebra.I
|
isone(word(g)) || isone(matrix(g))
|
||||||
|
|
||||||
function Base.:(==)(m1::M1, m2::M2) where {M1<:MatrixGroupElement,M2<:MatrixGroupElement}
|
function Base.:(==)(m1::M1, m2::M2) where {M1<:MatrixGroupElement,M2<:MatrixGroupElement}
|
||||||
parent(m1) === parent(m2) || return false
|
parent(m1) === parent(m2) || return false
|
||||||
word(m1) == word(m2) && return true
|
word(m1) == word(m2) && return true
|
||||||
return matrix_repr(m1) == matrix_repr(m2)
|
return matrix(m1) == matrix(m2)
|
||||||
end
|
end
|
||||||
|
|
||||||
Base.size(m::MatrixGroupElement{N}) where {N} = (N, N)
|
Base.size(m::MatrixGroupElement{N}) where {N} = (N, N)
|
||||||
@ -19,15 +19,15 @@ Base.parent(sl::MatrixGroupElement) = sl.parent
|
|||||||
Groups.alphabet(M::MatrixGroup) = M.alphabet
|
Groups.alphabet(M::MatrixGroup) = M.alphabet
|
||||||
Groups.rewriting(M::MatrixGroup) = alphabet(M)
|
Groups.rewriting(M::MatrixGroup) = alphabet(M)
|
||||||
|
|
||||||
Base.hash(sl::MatrixGroupElement, h::UInt) =
|
Base.hash(m::MatrixGroupElement, h::UInt) =
|
||||||
hash(matrix_repr(sl), hash(parent(sl), h))
|
hash(matrix(m), hash(parent(m), h))
|
||||||
|
|
||||||
function matrix_repr(m::MatrixGroupElement{N,T}) where {N,T}
|
function matrix(m::MatrixGroupElement{N,T}) where {N,T}
|
||||||
if isone(word(m))
|
if isone(word(m))
|
||||||
return StaticArrays.SMatrix{N,N,T}(LinearAlgebra.I)
|
return StaticArrays.SMatrix{N,N,T}(LinearAlgebra.I)
|
||||||
end
|
end
|
||||||
A = alphabet(parent(m))
|
A = alphabet(parent(m))
|
||||||
return prod(matrix_repr(A[l]) for l in word(m))
|
return prod(matrix(A[l]) for l in word(m))
|
||||||
end
|
end
|
||||||
|
|
||||||
function Base.rand(
|
function Base.rand(
|
||||||
|
@ -20,7 +20,7 @@ Base.hash(e::ElementaryMatrix, h::UInt) =
|
|||||||
Base.inv(e::ElementaryMatrix{N}) where {N} =
|
Base.inv(e::ElementaryMatrix{N}) where {N} =
|
||||||
ElementaryMatrix{N}(e.i, e.j, -e.val)
|
ElementaryMatrix{N}(e.i, e.j, -e.val)
|
||||||
|
|
||||||
function matrix_repr(e::ElementaryMatrix{N,T}) where {N,T}
|
function matrix(e::ElementaryMatrix{N,T}) where {N,T}
|
||||||
m = StaticArrays.MMatrix{N,N,T}(LinearAlgebra.I)
|
m = StaticArrays.MMatrix{N,N,T}(LinearAlgebra.I)
|
||||||
m[e.i, e.j] = e.val
|
m[e.i, e.j] = e.val
|
||||||
x = StaticArrays.SMatrix{N,N}(m)
|
x = StaticArrays.SMatrix{N,N}(m)
|
||||||
|
@ -57,7 +57,7 @@ LinearAlgebra.transpose(s::ElementarySymplectic{N}) where {N} =
|
|||||||
Base.inv(s::ElementarySymplectic{N}) where {N} =
|
Base.inv(s::ElementarySymplectic{N}) where {N} =
|
||||||
ElementarySymplectic{N}(s.symbol, s.i, s.j, -s.val)
|
ElementarySymplectic{N}(s.symbol, s.i, s.j, -s.val)
|
||||||
|
|
||||||
function matrix_repr(s::ElementarySymplectic{N,T}) where {N,T}
|
function matrix(s::ElementarySymplectic{N,T}) where {N,T}
|
||||||
@assert iseven(N)
|
@assert iseven(N)
|
||||||
n = div(N, 2)
|
n = div(N, 2)
|
||||||
m = StaticArrays.MMatrix{N,N,T}(LinearAlgebra.I)
|
m = StaticArrays.MMatrix{N,N,T}(LinearAlgebra.I)
|
||||||
|
Loading…
Reference in New Issue
Block a user