mirror of
https://github.com/kalmarek/Groups.jl.git
synced 2024-11-28 00:40:28 +01:00
Compare commits
3 Commits
d385992e92
...
866e431c1a
Author | SHA1 | Date | |
---|---|---|---|
|
866e431c1a | ||
22cf6297a9 | |||
1a51a87771 |
@ -1,7 +1,7 @@
|
|||||||
name = "Groups"
|
name = "Groups"
|
||||||
uuid = "5d8bd718-bd84-11e8-3b40-ad14f4a32557"
|
uuid = "5d8bd718-bd84-11e8-3b40-ad14f4a32557"
|
||||||
authors = ["Marek Kaluba <kalmar@amu.edu.pl>"]
|
authors = ["Marek Kaluba <kalmar@amu.edu.pl>"]
|
||||||
version = "0.7.7"
|
version = "0.7.8"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
GroupsCore = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120"
|
GroupsCore = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120"
|
||||||
@ -17,7 +17,7 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
|
|||||||
GroupsCore = "0.4"
|
GroupsCore = "0.4"
|
||||||
KnuthBendix = "0.4"
|
KnuthBendix = "0.4"
|
||||||
OrderedCollections = "1"
|
OrderedCollections = "1"
|
||||||
PermutationGroups = "0.3"
|
PermutationGroups = "0.4"
|
||||||
StaticArrays = "1"
|
StaticArrays = "1"
|
||||||
julia = "1.6"
|
julia = "1.6"
|
||||||
|
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
import PermutationGroups:
|
import PermutationGroups:
|
||||||
AbstractPermutationGroup, AbstractPerm, degree, SymmetricGroup
|
AbstractPermutationGroup,
|
||||||
|
AbstractPermutation,
|
||||||
|
degree
|
||||||
|
|
||||||
"""
|
"""
|
||||||
WreathProduct(G::Group, P::AbstractPermutationGroup) <: Group
|
WreathProduct(G::Group, P::AbstractPermutationGroup) <: Group
|
||||||
@ -27,7 +29,7 @@ end
|
|||||||
|
|
||||||
struct WreathProductElement{
|
struct WreathProductElement{
|
||||||
DPEl<:DirectPowerElement,
|
DPEl<:DirectPowerElement,
|
||||||
PEl<:AbstractPerm,
|
PEl<:AbstractPermutation,
|
||||||
Wr<:WreathProduct,
|
Wr<:WreathProduct,
|
||||||
} <: GroupsCore.GroupElement
|
} <: GroupsCore.GroupElement
|
||||||
n::DPEl
|
n::DPEl
|
||||||
@ -36,7 +38,7 @@ struct WreathProductElement{
|
|||||||
|
|
||||||
function WreathProductElement(
|
function WreathProductElement(
|
||||||
n::DirectPowerElement,
|
n::DirectPowerElement,
|
||||||
p::AbstractPerm,
|
p::AbstractPermutation,
|
||||||
W::WreathProduct,
|
W::WreathProduct,
|
||||||
)
|
)
|
||||||
return new{typeof(n),typeof(p),typeof(W)}(n, p, W)
|
return new{typeof(n),typeof(p),typeof(W)}(n, p, W)
|
||||||
@ -53,16 +55,19 @@ function Base.iterate(G::WreathProduct)
|
|||||||
itr = Iterators.product(G.N, G.P)
|
itr = Iterators.product(G.N, G.P)
|
||||||
res = iterate(itr)
|
res = iterate(itr)
|
||||||
@assert res !== nothing
|
@assert res !== nothing
|
||||||
elt = WreathProductElement(first(res)..., G)
|
ab, st = res
|
||||||
return elt, (iterator = itr, state = last(res))
|
(a, b) = ab
|
||||||
|
elt = WreathProductElement(a, b, G)
|
||||||
|
return elt, (itr, st)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Base.iterate(G::WreathProduct, state)
|
function Base.iterate(G::WreathProduct, state)
|
||||||
itr, st = state.iterator, state.state
|
itr, st = state
|
||||||
res = iterate(itr, st)
|
res = iterate(itr, st)
|
||||||
res === nothing && return nothing
|
res === nothing && return nothing
|
||||||
elt = WreathProductElement(first(res)..., G)
|
(a::eltype(G.N), b::eltype(G.P)), st = res
|
||||||
return elt, (iterator = itr, state = last(res))
|
elt = WreathProductElement(a, b, G)
|
||||||
|
return elt, (itr, st)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Base.IteratorSize(::Type{<:WreathProduct{DP,PGr}}) where {DP,PGr}
|
function Base.IteratorSize(::Type{<:WreathProduct{DP,PGr}}) where {DP,PGr}
|
||||||
@ -118,8 +123,11 @@ function Base.deepcopy_internal(g::WreathProductElement, stackdict::IdDict)
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
function _act(p::AbstractPerm, n::DirectPowerElement)
|
function _act(p::AbstractPermutation, n::DirectPowerElement)
|
||||||
return DirectPowerElement(n.elts^p, parent(n))
|
return DirectPowerElement(
|
||||||
|
ntuple(i -> n.elts[i^p], length(n.elts)),
|
||||||
|
parent(n),
|
||||||
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Base.inv(g::WreathProductElement)
|
function Base.inv(g::WreathProductElement)
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
@test contains(sprint(print, π₁Σ), "surface")
|
@test contains(sprint(print, π₁Σ), "surface")
|
||||||
|
|
||||||
Groups.PermRightAut(p::Perm) = Groups.PermRightAut(p.d)
|
Groups.PermRightAut(p::Perm) = Groups.PermRightAut([i^p for i in 1:2genus])
|
||||||
# Groups.PermLeftAut(p::Perm) = Groups.PermLeftAut(p.d)
|
# Groups.PermLeftAut(p::Perm) = Groups.PermLeftAut(p.d)
|
||||||
autπ₁Σ = let autπ₁Σ = AutomorphismGroup(π₁Σ)
|
autπ₁Σ = let autπ₁Σ = AutomorphismGroup(π₁Σ)
|
||||||
pauts = let p = perm"(1,3,5)(2,4,6)"
|
pauts = let p = perm"(1,3,5)(2,4,6)"
|
||||||
@ -50,8 +50,9 @@
|
|||||||
@test π₁Σ.(word.(z)) == Groups.domain(first(S))
|
@test π₁Σ.(word.(z)) == Groups.domain(first(S))
|
||||||
d = Groups.domain(first(S))
|
d = Groups.domain(first(S))
|
||||||
p = perm"(1,3,5)(2,4,6)"
|
p = perm"(1,3,5)(2,4,6)"
|
||||||
@test Groups.evaluate!(deepcopy(d), τ) == d^inv(p)
|
@test Groups.evaluate!(deepcopy(d), τ) ==
|
||||||
@test Groups.evaluate!(deepcopy(d), τ^2) == d^p
|
ntuple(i -> d[i^inv(p)], length(d))
|
||||||
|
@test Groups.evaluate!(deepcopy(d), τ^2) == ntuple(i -> d[i^p], length(d))
|
||||||
|
|
||||||
E, sizes = Groups.wlmetric_ball(S, radius=3)
|
E, sizes = Groups.wlmetric_ball(S, radius=3)
|
||||||
@test sizes == [49, 1813, 62971]
|
@test sizes == [49, 1813, 62971]
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
@testset "GroupConstructions" begin
|
@testset "GroupConstructions" begin
|
||||||
|
|
||||||
|
symmetric_group(n) = PermGroup(perm"(1,2)", Perm([2:n; 1]))
|
||||||
|
|
||||||
@testset "DirectProduct" begin
|
@testset "DirectProduct" begin
|
||||||
GH =
|
GH =
|
||||||
let G = PermutationGroups.SymmetricGroup(3),
|
let G = symmetric_group(3), H = symmetric_group(4)
|
||||||
H = PermutationGroups.SymmetricGroup(4)
|
|
||||||
|
|
||||||
Groups.Constructions.DirectProduct(G, H)
|
Groups.Constructions.DirectProduct(G, H)
|
||||||
end
|
end
|
||||||
@ -17,7 +18,7 @@
|
|||||||
|
|
||||||
@testset "DirectPower" begin
|
@testset "DirectPower" begin
|
||||||
GGG = Groups.Constructions.DirectPower{3}(
|
GGG = Groups.Constructions.DirectPower{3}(
|
||||||
PermutationGroups.SymmetricGroup(3),
|
symmetric_group(3),
|
||||||
)
|
)
|
||||||
test_Group_interface(GGG)
|
test_Group_interface(GGG)
|
||||||
test_GroupElement_interface(rand(GGG, 2)...)
|
test_GroupElement_interface(rand(GGG, 2)...)
|
||||||
@ -28,8 +29,7 @@
|
|||||||
end
|
end
|
||||||
@testset "WreathProduct" begin
|
@testset "WreathProduct" begin
|
||||||
W =
|
W =
|
||||||
let G = PermutationGroups.SymmetricGroup(2),
|
let G = symmetric_group(2), P = symmetric_group(4)
|
||||||
P = PermutationGroups.SymmetricGroup(4)
|
|
||||||
|
|
||||||
Groups.Constructions.WreathProduct(G, P)
|
Groups.Constructions.WreathProduct(G, P)
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user