Skip to content

Commit

Permalink
added DirectSumOfXModAlgebras
Browse files Browse the repository at this point in the history
  • Loading branch information
cdwensley committed Jul 8, 2024
1 parent cfdf1d2 commit c3c4d07
Show file tree
Hide file tree
Showing 11 changed files with 277 additions and 89 deletions.
4 changes: 3 additions & 1 deletion doc/algebra.xml
Original file line number Diff line number Diff line change
Expand Up @@ -353,9 +353,11 @@ gap> [ Image(b2,m2)=m2^3, b2=b1^2 ];

<#Include Label="EmbeddingForDirectSumOfAlgebras">

<#Include Label="DirectSumOfAlgebraHomomorphisms">

<#Include Label="AlgebraActionOnDirectSum">

<#Include Label="DirectSumAlgebraActions">
<#Include Label="DirectSumOfAlgebraActions">

</Section>

Expand Down
113 changes: 58 additions & 55 deletions doc/xmod.xml
Original file line number Diff line number Diff line change
Expand Up @@ -141,61 +141,6 @@ gap> Size2d( XIAk4 );
]]>
</Example>

<ManSection>
<Oper Name="XModAlgebraByMultiplierAlgebra"
Arg="A" />
<Description>
When <M>A</M> is an algebra with multiplier algebra <M>M</M>,
then the map <M>A \to M, ~ a \mapsto \mu_a</M> is the boundary
of a crossed module in which the action is the identity map on <M>M</M>.
<P/>
</Description>
</ManSection>

<Example>
<![CDATA[
gap> XA := XModAlgebraByMultiplierAlgebra( A );
[ A(l,m) -> <algebra of dimension 3 over GF(5)> ]
gap> XModAlgebraAction( XA );
IdentityMapping( <algebra of dimension 3 over GF(5)> )
]]>
</Example>

<ManSection>
<Oper Name="XModAlgebraBySurjection"
Arg="f" />
<Description>
Let <M>\partial : S\rightarrow R</M> be a surjective algebra homomorphism
whose kernel lies in the annihilator of <M>S</M>.
Define the action of <M>R</M> on <M>S</M> by <M>r\cdot s = \widetilde{r}s</M>
where <M>\widetilde{r} \in \partial^{-1}(r)</M>,
as described in section <Ref Oper="AlgebraActionBySurjection"/>.
Then <M>\mathcal{X}=(\partial : S\rightarrow R)</M>
is a crossed module with the defined action.
<P/>
Continuing with the example in that section,
<P/>
</Description>
</ManSection>

<Example>
<![CDATA[
gap> X2 := XModAlgebraBySurjection( nat2 );;
gap> Display( X2 );
Crossed module [A2->Q2] :-
: Source algebra A2 has generators:
[ [ [ 0, 1, 2, 3 ], [ 0, 0, 1, 2 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ] ] ]
: Range algebra Q2 has generators:
[ v.1, v.2 ]
: Boundary homomorphism maps source generators to:
[ v.1 ]
]]>
</Example>

<#Include Label="XModAlgebraByBoundaryAndAction">

<#Include Label="XModAlgebraByModule">

<ManSection>
<Attr Name="Source" Label="for crossed modules of commutative algebras"
Arg="X0" />
Expand Down Expand Up @@ -269,6 +214,64 @@ gap> KnownAttributesOfObject( XIAk4 );
]]>
</Example>

<ManSection>
<Oper Name="XModAlgebraByMultiplierAlgebra"
Arg="A" />
<Description>
When <M>A</M> is an algebra with multiplier algebra <M>M</M>,
then the map <M>A \to M, ~ a \mapsto \mu_a</M> is the boundary
of a crossed module in which the action is the identity map on <M>M</M>.
<P/>
</Description>
</ManSection>

<Example>
<![CDATA[
gap> XA := XModAlgebraByMultiplierAlgebra( A );
[ A(l,m) -> <algebra of dimension 3 over GF(5)> ]
gap> XModAlgebraAction( XA );
IdentityMapping( <algebra of dimension 3 over GF(5)> )
]]>
</Example>

<ManSection>
<Oper Name="XModAlgebraBySurjection"
Arg="f" />
<Description>
Let <M>\partial : S\rightarrow R</M> be a surjective algebra homomorphism
whose kernel lies in the annihilator of <M>S</M>.
Define the action of <M>R</M> on <M>S</M> by <M>r\cdot s = \widetilde{r}s</M>
where <M>\widetilde{r} \in \partial^{-1}(r)</M>,
as described in section <Ref Oper="AlgebraActionBySurjection"/>.
Then <M>\mathcal{X}=(\partial : S\rightarrow R)</M>
is a crossed module with the defined action.
<P/>
Continuing with the example in that section,
<P/>
</Description>
</ManSection>

<Example>
<![CDATA[
gap> X2 := XModAlgebraBySurjection( nat2 );;
gap> Display( X2 );
Crossed module [A2->Q2] :-
: Source algebra A2 has generators:
[ [ [ 0, 1, 2, 3 ], [ 0, 0, 1, 2 ], [ 0, 0, 0, 1 ], [ 0, 0, 0, 0 ] ] ]
: Range algebra Q2 has generators:
[ v.1, v.2 ]
: Boundary homomorphism maps source generators to:
[ v.1 ]
]]>
</Example>

<#Include Label="XModAlgebraByBoundaryAndAction">

<#Include Label="XModAlgebraByModule">

<#Include Label="DirectSumOfXModAlgebras">


<ManSection>
<Oper Name="SubXModAlgebra"
Arg="alg src rng" />
Expand Down
15 changes: 13 additions & 2 deletions examples/module.g
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ hom3 := AlgebraHomomorphismByImages( A3, MB3, [ m3 ], [ mg3 ] );;
act3 := AlgebraActionByHomomorphism( hom3, B3 );
Print ( "action act3 of A3 on B3:\n", act3, "\n" );

## Section 4.1.6
bdy3 := AlgebraHomomorphismByImages( B3, A3, [ g3 ], [ m3 ] );
Print( "bdy3 = ", bdy3, "\n" );
X3 := XModAlgebraByBoundaryAndAction( bdy3, act3 );
Print( "crossed module X3:\n" );
Display( X3 );

## Section 2.3
m3 := [ [0,1,0], [0,0,1], [1,0,0] ];;
A4 := Algebra( Rationals, [m3] );;
Expand Down Expand Up @@ -96,12 +103,16 @@ Print( "\n first embedding into A3B3:\n", Embedding( A3B3, 1 ), "\n" );
Print( "second projection from A3B3:\n", Projection( A3B3, 2 ), "\n" );

## Section 2.4.3
hom := DirectSumOfAlgebraHomomorphisms( hom3, hom3 );
Print( "\nthe direct sum of hom3 with itself is:\n", hom, "\n" );

## Section 2.4.4
actMA3 := AlgebraActionByMultipliers( A3, A3, A3 );;
act5 := AlgebraActionOnDirectSum( actMA3, act3 );;
Print( "\naction of A on the direct sum of A3 and B3\n", act5, "\n" );

## Section 2.4.4
act6 := DirectSumAlgebraActions( act3, act4 );;
## Section 2.4.5
act6 := DirectSumOfAlgebraActions( act3, act4 );;
A6 := Source( act6 );
B6 := AlgebraActedOn( act6 );
Print( "\nact6 is the direct sum action of ", A6, " on ", B6, "\n" );
Expand Down
2 changes: 1 addition & 1 deletion init.g
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ fi;

## read the function declarations
ReadPackage( "xmodalg", "lib/algebra.gd" );
ReadPackage( "xmodalg", "lib/module.gd" );
ReadPackage( "xmodalg", "lib/alg2obj.gd" );
ReadPackage( "xmodalg", "lib/module.gd" );
ReadPackage( "xmodalg", "lib/alg2map.gd" );
7 changes: 7 additions & 0 deletions lib/alg2obj.gd
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,20 @@ DeclareAttribute( "XModAlgebraAction", IsPreXModAlgebra );

DeclareOperation( "XModAlgebraObj",
[ IsAlgebraHomomorphism, IsAlgebraAction ] );
DeclareOperation( "XModAlgebraObjNC",
[ IsAlgebraHomomorphism, IsAlgebraAction ] );

DeclareOperation( "PreXModAlgebraByBoundaryAndAction",
[ IsAlgebraHomomorphism, IsAlgebraAction ] );
DeclareOperation( "PreXModAlgebraByBoundaryAndActionNC",
[ IsAlgebraHomomorphism, IsAlgebraAction ] );

DeclareGlobalFunction( "XModAlgebra" );
DeclareOperation( "XModAlgebraByBoundaryAndAction",
[ IsAlgebraHomomorphism, IsAlgebraAction ] );
DeclareOperation( "XModAlgebraByBoundaryAndActionNC",
[ IsAlgebraHomomorphism, IsAlgebraAction ] );

DeclareOperation( "XModAlgebraBySurjection", [ IsAlgebraHomomorphism ] );
DeclareOperation( "XModAlgebraByMultiplierAlgebra",
[ IsAlgebra ] );
Expand Down
33 changes: 28 additions & 5 deletions lib/alg2obj.gi
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,9 @@ end );
###########################################################################
##
#M XModAlgebraObj( <bdy>, <act> ) . . . . . . . make a pre-crossed module
#M XModAlgebraObjNC( <bdy>, <act> ) . . . . . . make a pre-crossed module
##
InstallMethod( XModAlgebraObj, "for homomorphism and action", true,
InstallMethod( XModAlgebraObjNC, "for homomorphism and action", true,
[ IsAlgebraHomomorphism, IsAlgebraAction ], 0,
function( bdy, act )

Expand All @@ -129,7 +130,6 @@ function( bdy, act )
return fail;
fi;
fi;

## create the object
PM := rec();
ObjectifyWithAttributes( PM, type,
Expand All @@ -140,7 +140,14 @@ function( bdy, act )
LeftActingDomain, DA,
IsPreXModDomain, true,
Is2dAlgebraObject, true );
return PM;
end );

InstallMethod( XModAlgebraObj, "for homomorphism and action", true,
[ IsAlgebraHomomorphism, IsAlgebraAction ], 0,
function( bdy, act )
local PM;
PM := XModAlgebraObjNC( bdy, act );
## check axiom XModAlg1
if not IsPreXModAlgebra( PM ) then
return fail;

Check warning on line 153 in lib/alg2obj.gi

View check run for this annotation

Codecov / codecov/patch

lib/alg2obj.gi#L153

Added line #L153 was not covered by tests
Expand Down Expand Up @@ -382,11 +389,11 @@ end );
############################################################################
##
#M PreXModAlgebraByBoundaryAndAction
#M PreXModAlgebraByBoundaryAndActionNC
##
InstallMethod( PreXModAlgebraByBoundaryAndAction,
"pre-crossed module from boundary and action maps",
true, [ IsAlgebraHomomorphism, IsAlgebraAction ], 0,

function( bdy, act )
if not ( Source( act ) = Range( bdy ) ) then
Info( InfoXModAlg, 1, "Source(act) <> Range(bdy)" );
Expand All @@ -395,24 +402,40 @@ function( bdy, act )
return XModAlgebraObj( bdy, act );
end );

InstallMethod( PreXModAlgebraByBoundaryAndActionNC,
"pre-crossed module from boundary and action maps",
true, [ IsAlgebraHomomorphism, IsAlgebraAction ], 0,
function( bdy, act )
return XModAlgebraObjNC( bdy, act );

Check warning on line 409 in lib/alg2obj.gi

View check run for this annotation

Codecov / codecov/patch

lib/alg2obj.gi#L409

Added line #L409 was not covered by tests
end );

############################################################################
##
#M XModAlgebraByBoundaryAndAction
#M XModAlgebraByBoundaryAndActionNC
##
InstallMethod( XModAlgebraByBoundaryAndAction,
"crossed module from boundary and action maps", true,
[ IsAlgebraHomomorphism, IsAlgebraAction ], 0,
function( bdy, act )

local PM;

PM := PreXModAlgebraByBoundaryAndAction( bdy, act );
if not IsXModAlgebra( PM ) then
Error( "boundary and action only define a pre-crossed module" );

Check warning on line 424 in lib/alg2obj.gi

View check run for this annotation

Codecov / codecov/patch

lib/alg2obj.gi#L424

Added line #L424 was not covered by tests
fi;
return PM;
end );

InstallMethod( XModAlgebraByBoundaryAndActionNC,
"crossed module from boundary and action maps", true,
[ IsAlgebraHomomorphism, IsAlgebraAction ], 0,
function( bdy, act )
local PM;
PM := PreXModAlgebraByBoundaryAndActionNC( bdy, act );
SetIsXModAlgebra( PM, true );
return PM;

Check warning on line 436 in lib/alg2obj.gi

View check run for this annotation

Codecov / codecov/patch

lib/alg2obj.gi#L434-L436

Added lines #L434 - L436 were not covered by tests
end );

############################################################################
##
#M XModAlgebraByMultiplierAlgebra
Expand Down
Loading

0 comments on commit c3c4d07

Please sign in to comment.