diff --git a/experimental/GModule/src/Cohomology.jl b/experimental/GModule/src/Cohomology.jl index 8402f967457e..dd12952a2644 100644 --- a/experimental/GModule/src/Cohomology.jl +++ b/experimental/GModule/src/Cohomology.jl @@ -4,7 +4,7 @@ using Oscar import Oscar: action import Oscar: induce import Oscar: word -import Oscar: GAPWrap, pc_group, fp_group, direct_product, direct_sum, GAPGroup +import Oscar: GAPWrap, pc_group, fp_group, direct_product, direct_sum, GAPGroup, regular_gmodule, is_G_hom import AbstractAlgebra: Group, Module, FPModule import Base: parent diff --git a/experimental/GModule/src/GModule.jl b/experimental/GModule/src/GModule.jl index 5e06c0b6d35e..bbdde1756bf8 100644 --- a/experimental/GModule/src/GModule.jl +++ b/experimental/GModule/src/GModule.jl @@ -1,3 +1,8 @@ +function indecomposition end +function factor_set end +function regular_gmodule end +function is_G_hom end + include("Cohomology.jl") include("Types.jl") include("GaloisCohomology.jl") @@ -830,7 +835,7 @@ Return `(R[G], f, g)`, where - `g` is a bijective map between the elements of `G` and the indices of the corresponding module generators. """ -function regular_gmodule(G::Oscar.GAPGroup, R::Ring) +function Oscar.regular_gmodule(G::Oscar.GAPGroup, R::Ring) M = free_module(R, Int(order(G))) ge = collect(G) ZG = gmodule(G, [hom(M, M, [M[findfirst(isequal(ge[i]*g), ge)] for i=1:length(ge)]) for g = gens(G)]) @@ -839,7 +844,7 @@ function regular_gmodule(G::Oscar.GAPGroup, R::Ring) y->ge[Int(y)]) end -function regular_gmodule(::Type{FinGenAbGroup}, G::Oscar.GAPGroup, ::ZZRing) +function Oscar.regular_gmodule(::Type{FinGenAbGroup}, G::Oscar.GAPGroup, ::ZZRing) M = free_abelian_group(order(Int, G)) ge = collect(G) ZG = gmodule(G, [hom(M, M, [M[findfirst(isequal(ge[i]*g), ge)] for i=1:length(ge)]) for g = gens(G)]) @@ -1124,7 +1129,7 @@ module of the automorphism group over the character field. If `mA` is given, it needs to map the automorphism group over the character field into the the automorphisms of the base ring. """ -function factor_set(C::GModule{<:Any, <:AbstractAlgebra.FPModule{AbsSimpleNumFieldElem}}, mA::Union{Map, Nothing} = nothing) +function Oscar.factor_set(C::GModule{<:Any, <:AbstractAlgebra.FPModule{AbsSimpleNumFieldElem}}, mA::Union{Map, Nothing} = nothing) K = base_ring(C) if mA === nothing k, mkK = _character_field(C) @@ -1498,7 +1503,7 @@ of pairs: - a direct indecomposable summand - a homomorphism (embedding) of the underlying free modules """ -function indecomposition(C::GModule{<:Any, <:AbstractAlgebra.FPModule{<:FinFieldElem}}) +function Oscar.indecomposition(C::GModule{<:Any, <:AbstractAlgebra.FPModule{<:FinFieldElem}}) G = Gap(C) z = GAP.Globals.MTX.Indecomposition(G) k = base_ring(C) @@ -1543,7 +1548,7 @@ function ghom(C::GModule, D::GModule) return gmodule(H, C.G, [hom(H, H, [preimage(mH, action(C, inv(g))*mH(h)*action(D, g)) for h = gens(H)]) for g = gens(C.G)]), mH end -function is_G_hom(C::GModule, D::GModule, H::Map) +function Oscar.is_G_hom(C::GModule, D::GModule, H::Map) return all([H(action(C, g, h)) == action(D, g, H(h)) for g = gens(C.G) for h = gens(C.M)]) end @@ -1553,7 +1558,7 @@ A = abelian_group([3, 3]) C = gmodule(G, [hom(A, A, [A[1], A[1]+A[2]])]) is_consistent(C) -zg, ac = regular_gmodule(G, ZZ) +zg, ac = Oscar.regular_gmodule(G, ZZ) zg = gmodule(FinGenAbGroup, zg) H, mH = Oscar.GModuleFromGap.ghom(zg, C) inj = hom(C.M, H.M, [preimage(mH, hom(zg.M, C.M, [ac(C)(g)(c) for g = gens(zg.M)])) for c = gens(C.M)]) @@ -1979,16 +1984,12 @@ function Oscar.simplify(C::GModule{<:Any, <:AbstractAlgebra.FPModule{ZZRingElem} end export extension_of_scalars -export factor_set export ghom -export indecomposition export irreducible_modules export is_decomposable -export is_G_hom export restriction_of_scalars export trivial_gmodule export natural_gmodule -export regular_gmodule export gmodule_minimal_field export gmodule_over diff --git a/experimental/GModule/src/GaloisCohomology.jl b/experimental/GModule/src/GaloisCohomology.jl index 49450693f786..e201314ffe6b 100644 --- a/experimental/GModule/src/GaloisCohomology.jl +++ b/experimental/GModule/src/GaloisCohomology.jl @@ -1,6 +1,6 @@ module GaloisCohomology_Mod using Oscar -import Oscar: gmodule +import Oscar: gmodule, indecomposition, factor_set import Oscar: GrpCoh import Oscar.GrpCoh: CoChain, MultGrpElem, MultGrp, GModule, is_consistent, Group