From eb7d074a5020197bb8fb20c4f8014de2824102bf Mon Sep 17 00:00:00 2001 From: Chris Wensley Date: Tue, 28 Aug 2018 14:26:35 +0100 Subject: [PATCH 1/2] add names to some example variables --- doc/xmod.xml | 27 ++++++++++++--------------- tst/cat1.tst | 2 +- tst/xmod.tst | 24 +++++++++++------------- 3 files changed, 24 insertions(+), 29 deletions(-) diff --git a/doc/xmod.xml b/doc/xmod.xml index 80f26d8..86df845 100644 --- a/doc/xmod.xml +++ b/doc/xmod.xml @@ -368,33 +368,31 @@ which may have the attributes listed. Ac4 := GroupRing( GF(2), CyclicGroup(4) ); +gap> SetName( Ac4, "GF2[c4]" ); gap> IAc4 := AugmentationIdeal( Ac4 ); -, - (dimension 3)> + +gap> SetName( IAc4, "I(GF2[c4])" ); gap> XIAc4 := XModAlgebra( Ac4, IAc4 ); -[ , - (dimension 3)> -> ] +[ I(GF2[c4]) -> GF2[c4] ] gap> Bk4 := GroupRing( GF(2), SmallGroup( 4, 2 ) ); +gap> SetName( Bk4, "GF2[k4]" ); gap> IBk4 := AugmentationIdeal( Bk4 ); -, - (dimension 3)> + +gap> SetName( IBk4, "I(GF2[k4])" ); gap> XIBk4 := XModAlgebra( Bk4, IBk4 ); -[ , - (dimension 3)> -> ] +[ I(GF2[k4]) -> GF2[k4] ] gap> IAc4 = IBk4; false gap> homAB := AllHomsOfAlgebras( Ac4, Bk4 );; gap> homIAIB := AllHomsOfAlgebras( IAc4, IBk4 );; gap> mor := XModAlgebraMorphism( XIAc4, XIBk4, homIAIB[1], homAB[2] ); -[[..] => [..]] +[[I(GF2[c4])->GF2[c4]] => [I(GF2[k4])->GF2[k4]]] gap> Display( mor ); Morphism of crossed modules :- -: Source = [ , - (dimension 3)> -> ] -: Range = [ , - (dimension 3)> -> ] +: Source = [I(GF2[c4])->GF2[c4]] +: Range = [I(GF2[k4])->GF2[k4]] : Source Homomorphism maps source generators to: [ of ..., of ..., of ... ] : Range Homomorphism maps range generators to: @@ -405,7 +403,6 @@ gap> IsTotal( mor ); true gap> IsSingleValued( mor ); true - ]]> @@ -492,7 +489,7 @@ store the two algebra homomorphisms \theta and \varphi. theta; +gap> theta := SourceHom( mor ); [ (Z(2)^0)* of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] -> [ of ..., of ..., of ... ] diff --git a/tst/cat1.tst b/tst/cat1.tst index 334df3b..2fa45ef 100644 --- a/tst/cat1.tst +++ b/tst/cat1.tst @@ -8,7 +8,7 @@ gap> SetInfoLevel( InfoXModAlg, 0 ); gap> ## make cat1.tst independent of xmod.tst gap> Ak4 := GroupRing( GF(5), DihedralGroup(4) );; -gap> SetName( Ak4, "GF5[54]" ); +gap> SetName( Ak4, "GF5[k4]" ); gap> IAk4 := AugmentationIdeal( Ak4 );; gap> SetName( IAk4, "I(GF5[k4])" ); gap> XIAk4 := XModAlgebraByIdeal( Ak4, IAk4 );; diff --git a/tst/xmod.tst b/tst/xmod.tst index 6d23e1c..e7c6ed9 100644 --- a/tst/xmod.tst +++ b/tst/xmod.tst @@ -111,33 +111,31 @@ gap> ############################ gap> ## Chapter 3, Section 3.2.1 gap> Ac4 := GroupRing( GF(2), CyclicGroup(4) ); +gap> SetName( Ac4, "GF2[c4]" ); gap> IAc4 := AugmentationIdeal( Ac4 ); -, - (dimension 3)> + +gap> SetName( IAc4, "I(GF2[c4])" ); gap> XIAc4 := XModAlgebra( Ac4, IAc4 ); -[ , - (dimension 3)> -> ] +[ I(GF2[c4]) -> GF2[c4] ] gap> Bk4 := GroupRing( GF(2), SmallGroup( 4, 2 ) ); +gap> SetName( Bk4, "GF2[k4]" ); gap> IBk4 := AugmentationIdeal( Bk4 ); -, - (dimension 3)> + +gap> SetName( IBk4, "I(GF2[k4])" ); gap> XIBk4 := XModAlgebra( Bk4, IBk4 ); -[ , - (dimension 3)> -> ] +[ I(GF2[k4]) -> GF2[k4] ] gap> IAc4 = IBk4; false gap> homAB := AllHomsOfAlgebras( Ac4, Bk4 );; gap> homIAIB := AllHomsOfAlgebras( IAc4, IBk4 );; gap> mor := XModAlgebraMorphism( XIAc4, XIBk4, homIAIB[1], homAB[2] ); -[[..] => [..]] +[[I(GF2[c4])->GF2[c4]] => [I(GF2[k4])->GF2[k4]]] gap> Display( mor ); Morphism of crossed modules :- -: Source = [ , - (dimension 3)> -> ] -: Range = [ , - (dimension 3)> -> ] +: Source = [I(GF2[c4])->GF2[c4]] +: Range = [I(GF2[k4])->GF2[k4]] : Source Homomorphism maps source generators to: [ of ..., of ..., of ... ] : Range Homomorphism maps range generators to: From fa3b48f7039404832fd1bdfe3b768ee6a1b389b1 Mon Sep 17 00:00:00 2001 From: Chris Wensley Date: Wed, 29 Aug 2018 12:03:46 +0100 Subject: [PATCH 2/2] added method for ImagesSource --- CHANGES.md | 1 + doc/xmod.xml | 21 +++++++++++++-------- lib/alg2map.gi | 23 +++++++++++++++++++++-- lib/alg2obj.gi | 2 +- tst/xmod.tst | 25 +++++++++++++++++-------- 5 files changed, 53 insertions(+), 19 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 00a5f86..b3290da 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,7 @@ # CHANGES to the 'XModAlg' package ## 1.16 -> 1.17 + * (29/08/18) added method for ImagesSource at end of alg2map.gi * (28/08/18) update examples to avoid travis failures ## 1.15 -> 1.16 diff --git a/doc/xmod.xml b/doc/xmod.xml index 86df845..5e468c5 100644 --- a/doc/xmod.xml +++ b/doc/xmod.xml @@ -455,8 +455,8 @@ is called the image of (\theta,\varphi). Further, \Im(\theta,\varphi) is a subcrossed module of (S^{\prime},R^{\prime},\partial^{\prime}).

-In our package, the image of a crossed module homomorphism -can be obtained by the command Image2dAlgebraMapping. +In this package, the image of a crossed module homomorphism +can be obtained by the command ImagesSource. The operation Sub2dAlgObject is effectively used for finding the kernel and image crossed modules induced from a given crossed module homomorphism. @@ -489,12 +489,17 @@ store the two algebra homomorphisms \theta and \varphi. theta := SourceHom( mor ); -[ (Z(2)^0)* of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, - (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] -> [ of ..., of ..., - of ... ] -gap> phi := RangeHom( mor ); -[ (Z(2)^0)*f1 ] -> [ (Z(2)^0)* of ... ] +gap> ic4 := One( Ac4 );; +gap> theta := SourceHom( mor );; +gap> e1 := ic4*c4.1 + ic4*c4.2; +(Z(2)^0)*f1+(Z(2)^0)*f2 +gap> ImageElm( theta, e1 ); + of ... +gap> phi := RangeHom( mor );; +gap> e2 := ic4*c4.1; +(Z(2)^0)*f1 +gap> ImageElm( phi, e2 ); +(Z(2)^0)* of ... gap> IsInjective( mor ); false gap> IsSurjective( mor ); diff --git a/lib/alg2map.gi b/lib/alg2map.gi index c7cddcb..0ce8dc5 100644 --- a/lib/alg2map.gi +++ b/lib/alg2map.gi @@ -7,7 +7,7 @@ ############################################################################## ## -#M Make2dAlgebraMorphism( , , , ) . . . map between 2d-objects +#M Make2dAlgebraMorphism( , , , ) . . . 2d-object map ## InstallMethod( Make2dAlgebraMorphism, "for 2d-object, 2d-object, homomorphism, homomorphism", true, @@ -39,7 +39,7 @@ end ); ############################################################################# ## -#M IsPreXModAlgebraMorphism check that the diagram of algebra homs commutes +#M IsPreXModAlgebraMorphism check diagram of algebra homs commutes ## InstallMethod( IsPreXModAlgebraMorphism, "generic method for pre-crossed module homomorphisms", @@ -700,3 +700,22 @@ InstallOtherMethod( IsBijective, "method for a 2d-mapping", true, [ Is2dAlgebraMorphism ], 0, map -> ( IsBijective( SourceHom( map ) ) and IsBijective( RangeHom( map ) ) ) ); + +############################################################################# +## +#M ImagesSource( ) . . . . for pre-xmod and pre-cat1 algebra morphisms +## +InstallOtherMethod( ImagesSource, "image of pre-xmod/cat1 algebra morphism", + true, [ Is2DimensionalMapping and Is2dAlgebraMorphism ], 0, +function( mor ) + + local Shom, Rhom, imS, imR, sub; + + Shom := SourceHom( mor ); + Rhom := RangeHom( mor ); + imS := ImagesSource( Shom ); + imR := ImagesSource( Rhom ); + sub := Sub2dAlgebra( Range( mor ), imS, imR ); + return sub; +end ); + diff --git a/lib/alg2obj.gi b/lib/alg2obj.gi index 6406710..b0a95d5 100644 --- a/lib/alg2obj.gi +++ b/lib/alg2obj.gi @@ -1148,7 +1148,7 @@ function( PM, Ssrc, Srng ) return fail; fi; if not IsIdeal( Prng, Srng ) then - Print( "Srng is not a ideal of Prng\n" ); + Print( "Srng is not an ideal of Prng\n" ); return fail; fi; Pbdy := Boundary( PM ); diff --git a/tst/xmod.tst b/tst/xmod.tst index e7c6ed9..943c607 100644 --- a/tst/xmod.tst +++ b/tst/xmod.tst @@ -108,8 +108,9 @@ Crossed module [->GF(2^2)[k4]] :- [ (Z(2)^0)* of ...+(Z(2)^0)*f1+(Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] gap> ############################ -gap> ## Chapter 3, Section 3.2.1 -gap> Ac4 := GroupRing( GF(2), CyclicGroup(4) ); +gap> ## Chapter 3, Section 3.2.1 +gap> c4 := CyclicGroup( 4 );; +gap> Ac4 := GroupRing( GF(2), c4 ); gap> SetName( Ac4, "GF2[c4]" ); gap> IAc4 := AugmentationIdeal( Ac4 ); @@ -158,16 +159,24 @@ gap> IsSubXModAlgebra( XIAc4, Xmor ); true gap> ############################ gap> ## Chapter 3, Section 3.2.4 -gap> theta := SourceHom( mor ); -[ (Z(2)^0)* of ...+(Z(2)^0)*f2, (Z(2)^0)*f1+(Z(2)^0)*f2, - (Z(2)^0)*f2+(Z(2)^0)*f1*f2 ] -> [ of ..., of ..., - of ... ] -gap> phi := RangeHom( mor ); -[ (Z(2)^0)*f1 ] -> [ (Z(2)^0)* of ... ] +gap> ic4 := One( Ac4 );; +gap> theta := SourceHom( mor );; +gap> e1 := ic4*c4.1 + ic4*c4.2; +(Z(2)^0)*f1+(Z(2)^0)*f2 +gap> ImageElm( theta, e1 ); + of ... +gap> phi := RangeHom( mor );; +gap> e2 := ic4*c4.1; +(Z(2)^0)*f1 +gap> ImageElm( phi, e2 ); +(Z(2)^0)* of ... gap> IsInjective( mor ); false gap> IsSurjective( mor ); false +gap> Image( mor ); +Srng is not an ideal of Prng +fail gap> STOP_TEST( "xmod.tst", 10000 ); ############################################################################