diff --git a/.gitignore b/.gitignore index 0fa6292..095a73d 100644 --- a/.gitignore +++ b/.gitignore @@ -21,7 +21,6 @@ /doc/*.toc /doc/title.xml -/doc/xmodalg.xml /doc/XModAlg.xml /doc/manual.pdf /doc/bib.xml.bib diff --git a/doc/algebra.xml b/doc/algebra.xml index dbacf73..796fe09 100644 --- a/doc/algebra.xml +++ b/doc/algebra.xml @@ -2,7 +2,7 @@ - + @@ -339,6 +339,12 @@ gap> [ Image(b2,m2)=m2^3, b2=b1^2 ]; <#Include Label="EmbeddingForDirectSumOfAlgebras"> +<#Include Label="DirectSumOfAlgebraHomomorphisms"> + +<#Include Label="AlgebraActionOnDirectSum"> + +<#Include Label="DirectSumOfAlgebraActions"> +
diff --git a/doc/xmod.xml b/doc/xmod.xml index 39d58dd..fbabbd1 100644 --- a/doc/xmod.xml +++ b/doc/xmod.xml @@ -2,7 +2,7 @@ - + @@ -300,6 +300,8 @@ Crossed module [ -> ..] :- [ (Z(5)^0)* of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2 ] ]]> +<#Include Label="DirectSumOfXModAlgebras"> +
diff --git a/examples/algebra.g b/examples/algebra.g index 3b015af..3038887 100644 --- a/examples/algebra.g +++ b/examples/algebra.g @@ -49,9 +49,9 @@ Print( "BMA1 = BasisVectors( Basis( MA1 ) )\n" ); Print( "BMA1[3] = ", BMA1[3], "\n" ); ## Section 2.1.5 -hom1 := MultiplierHomomorphism( MA1 );; -Print( "\nhom1 = MultiplierHomomorphism( MA1 ): ", hom1, "\n" ); -Print( "ImageElm( hom1, BA1[2] ) = ", ImageElm( hom1, BA1[2] ), "\n" ); +mhom1 := MultiplierHomomorphism( MA1 );; +Print( "\nmhom1 = MultiplierHomomorphism( MA1 ): ", mhom1, "\n" ); +Print( "ImageElm( mhom1, BA1[2] ) = ", ImageElm( mhom1, BA1[2] ), "\n" ); ## Section 2.2.2 A1 := GroupRing( GF(5), Group( (1,2,3,4,5,6) ) );; diff --git a/examples/module.g b/examples/module.g index 74c196d..8556455 100644 --- a/examples/module.g +++ b/examples/module.g @@ -19,16 +19,11 @@ Amg3 := AlgebraByGenerators( Rationals, [ mg3 ] );; homg3 := AlgebraHomomorphismByImages( A3, Amg3, [ m3 ], [ mg3 ] );; actg3 := AlgebraActionByHomomorphism( homg3, Rc3 ); Print ( "action actg3 of A3 on Rc3:\n", actg3, "\n" ); - -## Section 4.1.7 homg3 := AlgebraHomomorphismByImages( A3, Amg3, [ m3 ], [ mg3 ] ); bdy3 := AlgebraHomomorphismByImages( Rc3, A3, [g3 ], [m3 ] ); X3 := XModAlgebraByBoundaryAndAction( bdy3, actg3 ); ## Section 2.3 -m3 := [ [0,1,0], [0,0,1], [1,0,0] ];; -A3 := Algebra( Rationals, [m3] );; -SetName( A3, "A3" );; V3 := Rationals^3;; M3 := LeftAlgebraModule( A3, \*, V3 );; SetName( M3, "M3" ); diff --git a/lib/dsum-xmod.gd b/lib/dsum-xmod.gd index 43719d9..6fe0809 100644 --- a/lib/dsum-xmod.gd +++ b/lib/dsum-xmod.gd @@ -1,8 +1,8 @@ - ############################################################################# +############################################################################# ## #W dsum-xmod.gd The XMODALG package Zekeriya Arvasi #W & Alper Odabas -#Y Copyright (C) 2014-2025, Zekeriya Arvasi & Alper Odabas, +#Y Copyright (C) 2014-2026, Zekeriya Arvasi & Alper Odabas, ## ############################################################################ @@ -36,7 +36,6 @@ DeclareOperation( "AlgebraActionByDirectSum", ############################################################################ ## #O DirectSumOfAlgebraHomomorphisms( ) -#O AlgebraHomomorphismFromDirectSum( ) ## ## <#GAPDoc Label="DirectSumOfAlgebraHomomorphisms"> ## @@ -46,15 +45,11 @@ DeclareOperation( "AlgebraActionByDirectSum", ## ## Let \theta_1 : B_1 \to A_1 and \theta_2 : B_2 \to A_2 ## be algebra homomorphisms. -## The first operation uses embeddings into A = A_1 \oplus A_2 +## This operation uses embeddings into A = A_1 \oplus A_2 ## and B = B_1 \oplus B_2 to construct ## \theta = \theta_1 \oplus \theta_2 : B \to A ## where \theta(b_1,b_2) = (\theta_1b_1,\theta_2b_2). ##

-## When A_1=A_2 the second operation constructs -## \theta = \theta_1 \oplus \theta_2 : B \to A_1 -## where \theta(b_1,b_2) = \theta_1b_1 + \theta_2b_2. -##

## The example uses the homomorphism homg3 used in ## Section ##

@@ -77,8 +72,6 @@ DeclareOperation( "AlgebraActionByDirectSum", ## DeclareOperation( "DirectSumOfAlgebraHomomorphisms", [ IsAlgebraHomomorphism, IsAlgebraHomomorphism ] ); -DeclareOperation( "AlgebraHomomorphismFromDirectSum", - [ IsAlgebraHomomorphism, IsAlgebraHomomorphism ] ); ## section 2.4.4 ############################################################################ diff --git a/lib/dsum-xmod.gi b/lib/dsum-xmod.gi index 2c3a357..6ddfb55 100644 --- a/lib/dsum-xmod.gi +++ b/lib/dsum-xmod.gi @@ -2,7 +2,7 @@ ## #W dsum-xmod.gi The XMODALG package Zekeriya Arvasi #W & Alper Odabas -#Y Copyright (C) 2014-2025, Zekeriya Arvasi & Alper Odabas, +#Y Copyright (C) 2014-2026, Zekeriya Arvasi & Alper Odabas, ## ############################################################################# @@ -212,43 +212,6 @@ InstallMethod( DirectSumOfAlgebraHomomorphisms, return hom; end); -############################################################################# -## -#M AlgebraHomomorphismFromDirectSum -## -InstallMethod( AlgebraHomomorphismFromDirectSum, - "for two algebra homomorphisms", - [ IsAlgebraHomomorphism, IsAlgebraHomomorphism ], - function( hom1, hom2 ) - local B1, A, gen1, im1, B2, gen2, im2, - dom, B, eB1, eB2, genB, imhom, hom; - B1 := Source( hom1 ); - A := Range( hom1 ); - gen1 := GeneratorsOfAlgebra( B1 ); - im1 := List( gen1, g -> ImageElm( hom1, g ) ); - B2 := Source( hom2 ); - if not ( A = Range( hom2 ) ) then - Error( "hom1 and hom2 should have the same range" ); - fi; - gen2 := GeneratorsOfAlgebra( B2 ); - im2 := List( gen2, g -> ImageElm( hom2, g ) ); - dom := LeftActingDomain( B1 ); - if not ( dom = LeftActingDomain( B2 ) ) then - Error( "homomorphisms are over different domains" ); - fi; - B := DirectSumOfAlgebrasWithInfo( B1, B2 ); - eB1 := Embedding( B, 1 ); - eB2 := Embedding( B, 2 ); - genB := Concatenation( List( gen1, b -> ImageElm( eB1, b ) ), - List( gen2, b -> ImageElm( eB2, b ) ) ); -Print( "genB = ", genB, "\n" ); - imhom := Concatenation( im1, im2 ); -Print( "imhom = ", imhom, "\n" ); -Error("here"); - hom := AlgebraHomomorphismByImages( B, A, genB, imhom ); - return hom; -end); - ############################################################################# ## #M AlgebraActionOnDirectSum @@ -303,8 +266,8 @@ InstallMethod( DirectSumOfAlgebraActions, "for two algebra actions", true, [ IsAlgebraAction, IsAlgebraAction ], 0, function( act1, act2 ) local domA, A1, basA1, nA1, A2, basA2, nA2, A, basA, firstA, - B1, basB1, nB1, B2, basB2, nB2, B, basB, firstB, zB, zB1, zB2, - C1, basC1, nC1, C2, basC2, nC2, C, basC, c, imc, hom, + B1, basB1, nB1, B2, basB2, nB2, B, basB, firstB, + C1, basC1, nC1, C2, basC2, nC2, C, basC, c, imc1, imc2, imc, hom, eA1, imA1, eA2, imA2, eB1, imB1, eB2, imB2, i, act; A1 := Source( act1 ); domA := LeftActingDomain( A1 ); @@ -360,18 +323,12 @@ function( act1, act2 ) imB2 := List( [1..nB2], j -> ImageElm( eB2, basB2[j] ) ); basB := Concatenation( imB1, imB2 ); basC := ListWithIdenticalEntries( nC1+nC2, 0 ); - zB := Zero( B ); - zB1 := List( [1..nB1], i -> zB ); - zB2 := List( [1..nB2], i -> zB ); -## zB1 := imB1; -## zB2 := imB2; -## Print( "zB1 = ", zB1, "\n" ); -## Print( "zB2 = ", zB2, "\n" ); for i in [1..nC1] do ## c := ImageElm( act1, basA1[i] ); c := basC1[i]; - imc := List( basB1, b -> ImageElm( eB1, ImageElm( c, b ) ) ); - imc := Concatenation( imc, zB2 ); + imc1 := List( basB1, b -> ImageElm( eB1, ImageElm( c, b ) ) ); + imc2 := List( basB2, b -> ImageElm( eB2, b ) ); + imc := Concatenation( imc1, imc2 ); ## Print( "\nimc1 = ", imc, "\n\n" ); hom := LeftModuleHomomorphismByImages( B, B, basB, imc ); ## Error("here"); @@ -383,8 +340,9 @@ function( act1, act2 ) for i in [1..nC2] do ## c := ImageElm( act2, basA2[i] ); c := basC2[i]; - imc := List( basB2, b -> ImageElm( eB2, ImageElm( c, b ) ) ); - imc := Concatenation( zB1, imc ); + imc1 := List( basB1, b -> ImageElm( eB1, b ) ); + imc2 := List( basB2, b -> ImageElm( eB2, ImageElm( c, b ) ) ); + imc := Concatenation( imc1, imc2 ); ## Print( "\nimc2 = ", imc, "\n\n" ); hom := LeftModuleHomomorphismByImages( B, B, basB, imc ); basC[nC1+i] := hom; @@ -433,7 +391,7 @@ function( X1, X2 ) act2 := XModAlgebraAction( X2 ); ## now construct the combined boundary bdy12 := DirectSumOfAlgebraHomomorphisms( bdy1, bdy2 ); - act12 := AlgebraActionOnDirectSum( act1, act2 ); + act12 := DirectSumOfAlgebraActions( act1, act2 ); X12 := PreXModAlgebraByBoundaryAndAction( bdy12, act12 ); ok := IsPreXModAlgebra( X12 ); Print( "X12 is a pre-crossed module of algebras? ", ok, "\n" ); diff --git a/tst/algebra.tst b/tst/algebra.tst index a3a9278..fd51493 100644 --- a/tst/algebra.tst +++ b/tst/algebra.tst @@ -2,7 +2,7 @@ ## #W algebra.tst XModAlg test files Z. Arvasi - A. Odabas ## -#@local level,A1,BA1,v,I1,v1,m1,id1,L1,h1,u1,S1,MS1,BMS1,MA1,BMA1,hom1,act1,act12,theta1,m2,A2,S2,nat2,Q2,act2,I2,BI2,b1,b2,P1,P2,A2c6,R2c3,homAR,homRA,bijAA,ideAA +#@local level,A1,BA1,v,I1,v1,m1,id1,L1,h1,u1,S1,MS1,BMS1,MA1,BMA1,mhom1,act1,act12,theta1,m2,A2,S2,nat2,Q2,act2,I2,BI2,b1,b2,P1,P2,A2c6,R2c3,homAR,homRA,bijAA,ideAA gap> START_TEST( "XModAlg package: algebra.tst" ); gap> level := InfoLevel( InfoXModAlg );; @@ -57,8 +57,8 @@ gap> BMA1[3]; A1> ## Section 2.1.5 -gap> hom1 := MultiplierHomomorphism( MA1 );; -gap> ImageElm( hom1, BA1[2] ); +gap> mhom1 := MultiplierHomomorphism( MA1 );; +gap> ImageElm( mhom1, BA1[2] ); Basis( A1, [ (Z(5)^0)*(), (Z(5)^0)*(1,2,3,4,5,6), (Z(5)^0)*(1,3,5)(2\ ,4,6), (Z(5)^0)*(1,4)(2,5)(3,6), (Z(5)^0)*(1,5,3)(2,6,4), (Z(5)^0)*(1,6,5,4,3,2) @@ -84,7 +84,9 @@ gap> theta1 := NaturalHomomorphismByIdeal( A1, I1 ); gap> List( BA1, v -> ImageElm( theta1, v ) ); [ v.1, v.2, v.3, v.4, (Z(5)^2)*v.1+(Z(5)^2)*v.3, (Z(5)^2)*v.2+(Z(5)^2)*v.4 ] gap> AlgebraActionBySurjection( theta1 ); +!!! kernel of hom is not in the annihilator of A +!!! fail gap> ## an example which does not fail: gap> m2 := [ [0,1,2,3], [0,0,1,2], [0,0,0,1], [0,0,0,0] ];; diff --git a/tst/cat1.tst b/tst/cat1.tst index 534f559..dc9da04 100644 --- a/tst/cat1.tst +++ b/tst/cat1.tst @@ -2,7 +2,7 @@ ## #W cat1.tst XModAlg test files Z. Arvasi - A. Odabas ## -#@local level,Ak4,IAk4,XIAk4,m,A1,A3,nat13,X13,G,F,R,e5,S,act,bdy,XM,A2c6,R2c3,homAR,homRA,t4,e4,C4,C,C0,C6,A6,B6,eA6,eB6,SA6,SB6,SC6,C1,C2,SC1,SC2,RC1,RC2,gSC1,gSC2,gRC1,gRC2,imS,homS,imR,homR,m12,im12 +#@local level,Ak4,IAk4,XIAk4,m2,A2,S2,nat2,X2,G,F,R,e5,S,act,bdy,XM,A2c6,R2c3,homAR,homRA,t4,e4,C4,C,C0,C6,A6,B6,eA6,eB6,SA6,SB6,SC6,C1,C2,SC1,SC2,RC1,RC2,gSC1,gSC2,gRC1,gRC2,imS,homS,imR,homR,m12,im12 gap> START_TEST( "XModAlg package: cat1.tst" ); gap> level := InfoLevel( InfoXModAlg );; @@ -15,11 +15,11 @@ gap> IAk4 := AugmentationIdeal( Ak4 );; gap> SetName( IAk4, "I(GF5[k4])" ); gap> XIAk4 := XModAlgebraByIdeal( Ak4, IAk4 );; -gap> m := [ [0,1,2,3], [0,0,1,2], [0,0,0,1], [0,0,0,0] ];; -gap> A1 := Algebra( Rationals, [m] );; -gap> A3 := Subalgebra( A1, [m^3] );; -gap> nat13 := NaturalHomomorphismByIdeal( A1, A3 );; -gap> X13 := XModAlgebraBySurjection( nat13 );; +gap> m2 := [ [0,1,2,3], [0,0,1,2], [0,0,0,1], [0,0,0,0] ];; +gap> A2 := Algebra( Rationals, [m2] );; +gap> S2 := Subalgebra( A2, [m2^3] );; +gap> nat2 := NaturalHomomorphismByIdeal( A2, S2 );; +gap> X2 := XModAlgebraBySurjection( nat2 );; gap> G := SmallGroup( 4, 2 );; gap> F := GaloisField( 4 );; diff --git a/tst/dsum-xmod.tst b/tst/dsum-xmod.tst index 1de42ce..aa9c418 100644 --- a/tst/dsum-xmod.tst +++ b/tst/dsum-xmod.tst @@ -2,25 +2,35 @@ ## #W dsum-xmod.tst XModAlg test files Z. Arvasi - A. Odabas ## -#@local level,m,A1,m3,A3,c3, Rc3,g3,mg3,Amg3,homg3,m2,A2,S2,nat2,Q2,bdy3,X3,X4,hom2,hom22a,hom33a,hom33b,actMA3,act4,act5,A5,B5,em3,ea3,XY3,C4 +#@local level,m3,A3,c3,GRc3,g3,mg3,Amg3,homg3,actg3,bdy3,X3,V3,M3,act3,A1,BA1,m2,A2,S2,nat2,Q2,Y3,hom1,hom11,hom33a,hom33b,actMA3,act4,act5,A5,B5,em3,ea3,XY3,C3 gap> START_TEST( "XModAlg package: dsum-xmod.tst" ); gap> level := InfoLevel( InfoXModAlg );; gap> SetInfoLevel( InfoXModAlg, 0 ); ## make this test independent of algebra.tst and module.tst -gap> m := [ [0,1,2,3], [0,0,1,2], [0,0,0,1], [0,0,0,0] ];; -gap> A1 := Algebra( Rationals, [m] );; -gap> m3 := [ [0,1,0], [0,0,1], [1,0,0,] ];; +gap> m3 := [ [0,1,0], [0,0,1], [1,0,0] ];; gap> A3 := Algebra( Rationals, [m3] );; -gap> SetName( A3, "A3" );; +gap> SetName( A3, "A3" ); gap> c3 := Group( (1,2,3) );; -gap> Rc3 := GroupRing( Rationals, c3 );; -gap> SetName( Rc3, "GR(c3)" ); -gap> g3 := GeneratorsOfAlgebra( Rc3 )[2];; -gap> mg3 := RegularAlgebraMultiplier( Rc3, Rc3, g3 );; +gap> GRc3 := GroupRing( Rationals, c3 );; +gap> SetName( GRc3, "GR(c3)" ); +gap> g3 := GeneratorsOfAlgebra( GRc3 )[2];; +gap> mg3 := RegularAlgebraMultiplier( GRc3, GRc3, g3 );; gap> Amg3 := AlgebraByGenerators( Rationals, [ mg3 ] );; +gap> SetName( Amg3, "Amg3" ); gap> homg3 := AlgebraHomomorphismByImages( A3, Amg3, [ m3 ], [ mg3 ] );; +gap> actg3 := AlgebraActionByHomomorphism( homg3, GRc3 );; +gap> bdy3 := AlgebraHomomorphismByImages( GRc3, A3, [ g3 ], [ m3 ] );; +gap> X3 := XModAlgebraByBoundaryAndAction( bdy3, actg3 );; +gap> V3 := Rationals^3;; +gap> M3 := LeftAlgebraModule( A3, \*, V3 );; +gap> SetName( M3, "M3" ); +gap> act3 := AlgebraActionByModule( A3, M3 );; + +gap> A1 := GroupRing( GF(5), Group( (1,2,3,4,5,6) ) );; +gap> SetName( A1, "A1" ); +gap> BA1 := BasisVectors( Basis( A1 ) );; gap> m2 := [ [0,1,2,3], [0,0,1,2], [0,0,0,1], [0,0,0,0] ];; gap> A2 := Algebra( Rationals, [m2] );; gap> SetName( A2, "A2" ); @@ -30,10 +40,6 @@ gap> Q2 := Image( nat2 );; gap> SetName( Q2, "Q2" ); ## Section 4.1.7 -gap> bdy3 := AlgebraHomomorphismByImages( Rc3, A3, [ g3 ], [ m3 ] ); -[ (1)*(1,2,3) ] -> [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ] -gap> X3 := XModAlgebraByBoundaryAndAction( bdy3, actg3 ); -[ GR(c3) -> A3 ] gap> Display( X3 ); Crossed module [GR(c3) -> A3] :- : Source algebra GR(c3) has generators: @@ -45,37 +51,37 @@ Crossed module [GR(c3) -> A3] :- [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ] ## Section 4.1.8 -gap> X4 := XModAlgebraByModule( A3, M3 ); +gap> Y3 := XModAlgebraByModule( A3, M3 ); [A(M3)->A3] -gap> XModAlgebraAction( X4 ) = act3; -true -gap> Display( X4 ); +gap> Display( Y3 ); Crossed module [A(M3)->A3] :- : Source algebra A(M3) has generators: [ [[ 1, 0, 0 ]], [[ 0, 1, 0 ]], [[ 0, 0, 1 ]] ] : Range algebra A3 has generators: [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ] : Boundary homomorphism maps source generators to: - [ [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ], +[ [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ], [ [ 0, 0, 0 ], [ 0, 0, 0 ], [ 0, 0, 0 ] ] ] +gap> Image( XModAlgebraAction( Y3 ), m3 ) = Image( act3, m3 ); +true ## Section 2.4.3 -gap> hom2 := AlgebraHomomorphismByImages( A1, A1, [BA1[2]], [BA1[3]] ); +gap> hom1 := AlgebraHomomorphismByImages( A1, A1, [BA1[2]], [BA1[3]] ); [ (Z(5)^0)*(1,2,3,4,5,6) ] -> [ (Z(5)^0)*(1,3,5)(2,4,6) ] -gap> hom22a := DirectSumOfAlgebraHomomorphisms( hom2, hom2 );; -gap> Print( hom33a, "\n" ); -AlgebraHomomorphismByImages( A3(+)A3, Algebra( Rationals, -[ v.1, v.2, v.3, v.4, v.5, v.6 ] ), +gap> hom11 := DirectSumOfAlgebraHomomorphisms( hom1, hom1 );; +gap> Print( hom11, "\n" ); +AlgebraHomomorphismByImages( A1(+)A1, A1(+)A1, [ v.1, v.2, v.7, v.8 ], +[ v.1, v.3, v.7, v.9 ] ) +gap> hom33a := DirectSumOfAlgebraHomomorphisms( homg3, homg3 );; +gap> Print( "\nfirst direct sum of homg3 with itself is:\n", hom33a, "\n" ); +first direct sum of homg3 with itself is: +AlgebraHomomorphismByImages( A3(+)A3, Amg3(+)Amg3, [ [ [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ] ], [ [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 0, 0, 1 ], [ 0, 0, 0, 1, 0, 0 ] ] ], [ v.1, v.4 ] ) -gap> hom33a := DirectSumOfAlgebraHomomorphisms( homg3, homg3 ); -gap> Print( "\nfirst direct sum of homg3 with itself is:\n", hom33a, "\n" ); -gap> hom33b := AlgebraHomomorphismFromDirectSum( homg3, homg3 );; -gap> Print( hom33b, "\n" ); ## Section 2.4.4 gap> actMA3 := AlgebraActionByMultipliers( A3, A3, A3 );; @@ -88,33 +94,42 @@ gap> act4 := AlgebraActionOnDirectSum( actMA3, actg3 ); [ v.1, v.2, v.3, v.4, v.5, v.6 ] -> [ v.1, v.2, v.3, v.4, v.5, v.6 ] ] ## Section 2.4.5 -gap> act5 := DirectSumOfAlgebraActions( actg3, act3 );; -gap> A5 := Source( act5 ); -A3(+)A3 -gap> B5 := AlgebraActedOn( act5 );CanonicalBasis(A1); -gap> em3 := ImageElm( Embedding( A5, 1 ), m3 ); -[ [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 1, 0, 0, 0, 0, 0 ], - [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ] ] -gap> ImageElm( act5, em3 ); -Basis( GR(c3)(+)A(M3), [ v.1, v.2, v.3, v.4, v.5, v.6 ] ) -> -[ v.2, v.3, v.1, 0*v.1, 0*v.1, 0*v.1 ] -gap> ea3 := ImageElm( Embedding( A5, 2 ), a3 ); -[ [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], - [ 0, 0, 0, 0, 2, 3 ], [ 0, 0, 0, 3, 0, 2 ], [ 0, 0, 0, 2, 3, 0 ] ] -gap> ImageElm( act5, ea3 ); -Basis( GR(c3)(+)A(M3), [ v.1, v.2, v.3, v.4, v.5, v.6 ] ) -> -[ 0*v.1, 0*v.1, 0*v.1, (3)*v.5+(2)*v.6, (2)*v.4+(3)*v.6, (3)*v.4+(2)*v.5 ] +## +## The code for this operation is not yet correct, so commenting it out +## +## gap> act5 := DirectSumOfAlgebraActions( actg3, act3 );; +## gap> A5 := Source( act5 ); +## A3(+)A3 +## gap> B5 := AlgebraActedOn( act5 ); +## GR(c3)(+)A(M3) +## gap> em3 := ImageElm( Embedding( A5, 1 ), m3 ); +## [ [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 1, 0, 0, 0, 0, 0 ], +## [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ] ] +## gap> ImageElm( act5, em3 ); +## Basis( GR(c3)(+)A(M3), [ v.1, v.2, v.3, v.4, v.5, v.6 ] ) -> +## [ v.2, v.3, v.1, 0*v.1, 0*v.1, 0*v.1 ] +## gap> a3 := 2*m3 + 3*m3^2; +## [ [ 0, 2, 3 ], [ 3, 0, 2 ], [ 2, 3, 0 ] ] +## gap> ea3 := ImageElm( Embedding( A5, 2 ), a3 ); +## [ [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0 ], +## [ 0, 0, 0, 0, 2, 3 ], [ 0, 0, 0, 3, 0, 2 ], [ 0, 0, 0, 2, 3, 0 ] ] +## gap> ImageElm( act5, ea3 ); +## Basis( GR(c3)(+)A(M3), [ v.1, v.2, v.3, v.4, v.5, v.6 ] ) -> +## [ 0*v.1, 0*v.1, 0*v.1, (3)*v.5+(2)*v.6, (2)*v.4+(3)*v.6, (3)*v.4+(2)*v.5 ] ############################ ## Section 4.1.9 -gap> XY3 := DirectSumOfXModAlgebras( X3, Y3 ); -[ GR(c3)(+)A(M3) -> A3(+)A3 ] +## +## The code for this operation is not yet correct, so commenting it out +## +## gap> XY3 := DirectSumOfXModAlgebras( X3, Y3 ); +## [ GR(c3)(+)A(M3) -> A3(+)A3 ] ############################ ## Section 5.1.1 -gap> C4 := Cat1AlgebraOfXModAlgebra( X4 ); +gap> C3 := Cat1AlgebraOfXModAlgebra( Y3 ); [A3 |X A(M3) -> A3] -gap> Display( C4 ); +gap> Display( C3 ); Cat1-algebra [A3 |X A(M3)=>A3] :- : range algebra has generators: [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ] diff --git a/tst/xmod.tst b/tst/xmod.tst index 3701deb..9599b5b 100644 --- a/tst/xmod.tst +++ b/tst/xmod.tst @@ -29,7 +29,8 @@ gap> mg3 := RegularAlgebraMultiplier( Rc3, Rc3, g3 );; gap> Amg3 := AlgebraByGenerators( Rationals, [ mg3 ] );; gap> homg3 := AlgebraHomomorphismByImages( A3, Amg3, [ m3 ], [ mg3 ] );; gap> actg3 := AlgebraActionByHomomorphism( homg3, Rc3 );; - +gap> bdy3 := AlgebraHomomorphismByImages( Rc3, A3, [ g3 ], [ m3 ] );; +gap> X3 := XModAlgebraByBoundaryAndAction( bdy3, actg3 );; gap> V3 := Rationals^3;; gap> M3 := LeftAlgebraModule( A3, \*, V3 );; gap> SetName( M3, "M3" ); @@ -115,10 +116,6 @@ Crossed module [A2->Q2] :- ############################ ## Section 4.1.7 -gap> bdy3 := AlgebraHomomorphismByImages( Rc3, A3, [ g3 ], [ m3 ] ); -[ (1)*(1,2,3) ] -> [ [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ] -gap> X3 := XModAlgebraByBoundaryAndAction( bdy3, actg3 ); -[ GR(c3) -> A3 ] gap> Display( X3 ); Crossed module [GR(c3) -> A3] :- : Source algebra GR(c3) has generators: