Skip to content
Merged

Dsum #93

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
/doc/*.toc

/doc/title.xml
/doc/xmodalg.xml
/doc/XModAlg.xml
/doc/manual.pdf
/doc/bib.xml.bib
Expand Down
8 changes: 7 additions & 1 deletion doc/algebra.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!-- -->
<!-- algebra.xml XModAlg documentation Z. Arvasi -->
<!-- & A. Odabas -->
<!-- Copyright (C) 2014-2025, Z. Arvasi & A. Odabas, -->
<!-- Copyright (C) 2014-2026, Z. Arvasi & A. Odabas, -->
<!-- Osmangazi University, Eskisehir, Turkey -->
<!-- -->
<!-- ------------------------------------------------------------------- -->
Expand Down Expand Up @@ -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">

</Section>

<Section>
Expand Down
4 changes: 3 additions & 1 deletion doc/xmod.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<!-- -->
<!-- xmod.xml XModAlg documentation Z. Arvasi -->
<!-- & A. Odabas -->
<!-- Copyright (C) 2014-2025, Z. Arvasi & A. Odabas, -->
<!-- Copyright (C) 2014-2026, Z. Arvasi & A. Odabas, -->
<!-- Osmangazi University, Eskisehir, Turkey -->
<!-- -->
<!-- ------------------------------------------------------------------- -->
Expand Down Expand Up @@ -300,6 +300,8 @@ Crossed module [<e4> -> ..] :-
[ (Z(5)^0)*<identity> of ...+(Z(5)^0)*f1+(Z(5)^2)*f2+(Z(5)^2)*f1*f2 ]
]]></Example>

<#Include Label="DirectSumOfXModAlgebras">

</Section>


Expand Down
6 changes: 3 additions & 3 deletions examples/algebra.g
Original file line number Diff line number Diff line change
Expand Up @@ -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) ) );;
Expand Down
5 changes: 0 additions & 5 deletions examples/module.g
Original file line number Diff line number Diff line change
Expand Up @@ -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" );
Expand Down
13 changes: 3 additions & 10 deletions lib/dsum-xmod.gd
Original file line number Diff line number Diff line change
@@ -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,
##

############################################################################
Expand Down Expand Up @@ -36,7 +36,6 @@ DeclareOperation( "AlgebraActionByDirectSum",
############################################################################
##
#O DirectSumOfAlgebraHomomorphisms( <hom> <hom> )
#O AlgebraHomomorphismFromDirectSum( <hom> <hom> )
##
## <#GAPDoc Label="DirectSumOfAlgebraHomomorphisms">
## <ManSection>
Expand All @@ -46,15 +45,11 @@ DeclareOperation( "AlgebraActionByDirectSum",
## <Description>
## Let <M>\theta_1 : B_1 \to A_1</M> and <M>\theta_2 : B_2 \to A_2</M>
## be algebra homomorphisms.
## The first operation uses embeddings into <M>A = A_1 \oplus A_2</M>
## This operation uses embeddings into <M>A = A_1 \oplus A_2</M>
## and <M>B = B_1 \oplus B_2</M> to construct
## <M>\theta = \theta_1 \oplus \theta_2 : B \to A</M>
## where <M>\theta(b_1,b_2) = (\theta_1b_1,\theta_2b_2)</M>.
## <P/>
## When <M>A_1=A_2</M> the second operation constructs
## <M>\theta = \theta_1 \oplus \theta_2 : B \to A_1</M>
## where <M>\theta(b_1,b_2) = \theta_1b_1 + \theta_2b_2</M>.
## <P/>
## The example uses the homomorphism <C>homg3</C> used in
## Section <Ref Sect="AlgebraActionByHomomorphism" />
## <P/>
Expand All @@ -77,8 +72,6 @@ DeclareOperation( "AlgebraActionByDirectSum",
##
DeclareOperation( "DirectSumOfAlgebraHomomorphisms",
[ IsAlgebraHomomorphism, IsAlgebraHomomorphism ] );
DeclareOperation( "AlgebraHomomorphismFromDirectSum",
[ IsAlgebraHomomorphism, IsAlgebraHomomorphism ] );

## section 2.4.4
############################################################################
Expand Down
62 changes: 10 additions & 52 deletions lib/dsum-xmod.gi
Original file line number Diff line number Diff line change
Expand Up @@ -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,
##

#############################################################################
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 );
Expand Down Expand Up @@ -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");
Expand All @@ -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;
Expand Down Expand Up @@ -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" );
Expand Down
8 changes: 5 additions & 3 deletions tst/algebra.tst
Original file line number Diff line number Diff line change
Expand Up @@ -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 );;
Expand Down Expand Up @@ -57,8 +57,8 @@ gap> BMA1[3];
<linear mapping by matrix, A1 -> 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)
Expand All @@ -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] ];;
Expand Down
12 changes: 6 additions & 6 deletions tst/cat1.tst
Original file line number Diff line number Diff line change
Expand Up @@ -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 );;
Expand All @@ -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 );;
Expand Down
Loading