1
0
mirror of https://github.com/kalmarek/Groups.jl.git synced 2024-12-05 02:11:27 +01:00

WreathProduct uses the additive group of a ring by default

This commit is contained in:
kalmarek 2018-07-30 14:03:51 +02:00
parent 93253115ab
commit 0ab4df2ce5

View File

@ -7,17 +7,17 @@ export WreathProduct, WreathProductElem
############################################################################### ###############################################################################
doc""" doc"""
WreathProduct{T<:Group} <: Group WreathProduct(N, P) <: Group
> Implements Wreath product of a group $N$ by permutation (sub)group $P < S_k$, > Implements Wreath product of a group `N` by permutation group $P = S_n$,
> usually written as $N \wr P$. > usually written as $N \wr P$.
> The multiplication inside wreath product is defined as > The multiplication inside wreath product is defined as
> $$(n, \sigma) * (m, \tau) = (n\psi(\sigma)(m), \sigma\tau),$$ > > `(n, σ) * (m, τ) = (n*σ(m), στ)`
> where $\psi:P Aut(N^k)$ is the permutation representation of $S_k$ > where `σ(m)` denotes the action (from the right) of the permutation group on
> restricted to $P$. > `n-tuples` of elements from `N`
# Arguments: # Arguments:
* `::Group` : the single factor of group $N$ * `N::Group` : the single factor of group $N$
* `::Generic.PermGroup` : full `PermutationGroup` * `P::Generic.PermGroup` : full `PermutationGroup`
""" """
struct WreathProduct{T<:Group, I<:Integer} <: Group struct WreathProduct{T<:Group, I<:Integer} <: Group
N::DirectProductGroup{T} N::DirectProductGroup{T}
@ -64,7 +64,11 @@ parent(g::WreathProductElem) = WreathProduct(parent(g.n[1]), parent(g.p))
WreathProduct(G::T, P::Generic.PermGroup{I}) where {T, I} = WreathProduct{T, I}(G, P) WreathProduct(G::T, P::Generic.PermGroup{I}) where {T, I} = WreathProduct{T, I}(G, P)
WreathProductElem(n::DirectProductGroupElem{T}, p::Generic.perm{I}, check=true) where {T, I} = WreathProductElem{T, I}(n, p, check) WreathProduct(G::T, P::Generic.PermGroup{I}) where {T<:AbstractAlgebra.Ring, I} = WreathProduct(AddGrp(G), P)
WreathProductElem(n::DirectProductGroupElem{T}, p::Generic.perm{I}, check=true) where {T,I} = WreathProductElem{T,I}(n, p, check)
WreathProductElem(n::DirectProductGroupElem{T}, p::Generic.perm{I}, check=true) where {T<:AbstractAlgebra.RingElem, I} = WreathProductElem(DirectProductGroupElem(AddGrpElem.(n.elts)), p, check)
############################################################################### ###############################################################################
# #