Haopin Wu <psistwu@outlook.com>
This library provides GAP procedures for computation related to equivariant degree theory, which consists of the following parts:
- System
- Basic
- Group
- Compact Lie Group
- Orbit Type
- Direct Product
- Burnside Ring
For each part listed above, there is a corresponding demo file in folder ./demo
.
If you need to run gap in a folder different from ./demo
,
please copy and paste ./demo/preload.gap
to your working directory and
change the path written in the file accordingly.
You can then load the library in the same way as that in the demo files.
libSys.g
libSys.gd
libSys.gi
libSys
provides some system-level functions.
Clean()
Clean
resets all user-defined variables.
gap> a := 1;;
gap> Clean();
Cleaning all user-defined variables.... Done!
gap> a;
Error, Variable: 'a' must have a value
not in any function at *stdin*:3
libBasic.g
libBasic.gd
libBasic.gi
libBasic
includes basic functions for mathematics.
DotFileLattice( lat, filename )
DotFileLattice
generates a dot file with
name filename associated to lattice lat.
To obtain the diagram in a different format,
one needs to use the following command
in Bash:
dot -T
<format>
-o<outputfile>
<inputfile>
Please see examples in Part 3: Group and Part 4: Orbit Type for concrete usage.
libGroup.g
libGroup.gd
libGroup.gi
libBasic
libGroup
provides more functions for basic group theory.
Csubg1 < Csubg2
This is the partial order on the collection of CCSs of a group induced by the subgroup relation.
OrderOfWeylGroup( subg )
OrderOfWeylGroup( Csubg )
OrderOfWeylGroup
returns the order of the Weyl group of a subgroup.
The input argument can be either a subgroup or a CCS.
nLHnumber( L, H )
nLHnumber( CL, CH )
nLHnumber
returns
pCyclicGroup( n )
pCyclicGroup
returns a cyclic group embedded in a symmetric group.
pDihedralGroup( n )
pDihedralGroup
returns a dihedral group embedded in a symmetric group.
mCyclicGroup( n )
mCyclicGroup
returns a cyclic group as a collection of 2x2 matrices (a subgroup of $SO(2)$).
mDihedralGroup( n )
mDihedralGroup
returns a dihedral group as a collection of 2x2 matrices (a subgroup of $O(2)$).
LatticeCCSs( grp )
LatticeCCSs
returns the CCSs lattice of group grp.
This example demonstrates how to find the order of the Weyl group
and
First, compute all CCSs of
gap> grp := pDihedralGroup( 6 );;
gap> ccs_list := ConjugacyClassesSubgroups( grp );;
Next, select two CCSs of
gap> ccs1 := ccs_list[ 5 ];;
gap> ccs2 := ccs_list[ 8 ];;
gap> OrderOfWeylGroup( ccs1 );
4
gap> OrderOfWeylGroup( ccs2 );
2
gap> ccs1 < ccs2;
true
gap> nLHnumber( ccs1, ccs2 );
1
This example shows how to generate CCSs lattice diagarm of
First, generate a dot file associated to the CCSs lattice diagram of
gap> grp := SymmetricGroup( 4 );;
gap> lat := LatticeCCSs( grp );
<CCS lattice of Sym( [ 1 .. 4 ] ), 11 classes>
gap> DotFileLattice( lat, "s4_ccslat.dot" );;
Then, convert the dot file to a pdf file by the following command in Bash.
$ dot -Tpdf -o s4_ccslat.pdf s4_ccslat.dot
libCompactLieGroup.g
libCompactLieGroup.gd
libCompactLieGroup.gi
libBasic
libGroup
libCompactLieGroup
deals with Compact Lie Groups O(2) and SO(2).
libOrbitType.g
libOrbitType.gd
libOrbitType.gi
libBasic
libGroup
libOrbitType
deals with orbit types of group representations.
OrbitTypes( char )
OrbitTypes
returns the indices of CCSs which are orbit types of the given
group representation described by its character char.
LatticeOrbitTypes( char )
LatticeOrbitTypes
returns the lattice of orbit types of the given
group representation described by its character char.
DimensionOfFixedSet( char, subg )
DimensionOfFixedSet( char, Csubg )
DimensionOfFixedSet
returns dimension of the fixed set of a subgroup
with respect to the given group representation described by its character char.
The second argement can be either a subgroup or a CCS.
This example demonstrates how to find orbit types and the lattice of
an irreducible
First, let us select a 3-dimensional irreducible
gap> grp := SymmetricGroup( 4 );;
gap> Display( CharacterTable( grp ) );
CT2
2 3 2 3 . 2
3 1 . . 1 .
1a 2a 2b 3a 4a
2P 1a 1a 1a 3a 2b
3P 1a 2a 2b 1a 4a
X.1 1 -1 1 1 -1
X.2 3 -1 -1 . 1
X.3 2 . 2 -1 .
X.4 3 1 -1 . -1
X.5 1 1 1 1 1
gap> char := Irr( grp )[ 2 ];;
Next, find indices of orbit types and generate a dot file associated to the lattice.
gap> ind_orbtypes := OrbitTypes( char );
[ 1, 3, 4, 7, 11 ]
gap> lat_orbtypes := LatticeOrbitTypes( char );;
gap> DotFileLattice( lat_orbtypes, "s4_obtlat2.dot" );;
Finally, convert the dot file to a pdf file in Bash.
$ dot -Tpdf -o s4_obtlat2.pdf s4_obtlat2.dot
libDirectProduct.g
libDirectProduct.gd
libDirectProduct.gi
libBasic
libGroup
libDirectProduct
implements the amalgamation notation for subgroups of
the direct product of two groups.
DirectProductComponents( grp )
DirectProductComponents
returns the list of direct product
components of group grp.
SubgroupDirectProductInfo( subg )
SubgroupDirectProductInfo
returns the amalgamation description of a
subgroup of the direct product of two groups.
AmalgamationQuadruple( Csubg )
AmalgamationQuadruple
returns the quadruple of indices which
gives the amalgamation description of a CCS.
DirectProductDecomposition( grp, elm )
DirectProductDecomposition
returns the direct product decomposition
of an element in the direct product of groups.
DirectProductDecomposition( csubg )
DirectProductDecomposition( char )
Suppose DirectProductDecomposition
decomposes (1) a conjugacy class of subgroups of
AmalgamationNotation( Csubg )
AmalgamationNotation
returns the amalgamation notation of a CCS
of the direct product of two groups.
Before calling this function, one should name all CCSs of each
direct product component; otherwise, the the function will replace
names by indices.
This example demonstrates how to obtain the amalgamation notation of
a subgroup and a CCS of
First, create the group
gap> grp1 := SymmetricGroup( 4 );;
gap> grp2 := pDihedralGroup( 3 );;
gap> grp := DirectProduct( grp1, grp2 );;
gap> ccs_list := ConjugacyClassesSubgroups( grp );;
Next, take a subgroup of
gap> Csubg := ccs_list[ 38 ];;
gap> subg := representative( Csubg );;
Now, we can get the amalgamation descrpition of the subgroup.
gap> SubgroupDirectProductInfo( subg );
rec( DiscriminantElements := [ (1,2)(3,4)(6,7) ],
Quadruple := [ Group([ (1,2)(3,4), (), (3,4) ]), Group([ (3,4) ]), Group([ (1,2,3) ]),
Group([ (2,3), (1,2,3), () ]) ] )
In order to obtain the amalgamation notation of CCSs of
gap> ccs_s4_list := ConjugacyClassesSubgroups( grp1 );;
gap> SetName( ccs_s4_list[ 1 ], "Z1" );;
gap> SetName( ccs_s4_list[ 2 ], "Z2" );;
gap> SetName( ccs_s4_list[ 3 ], "D1" );;
gap> SetName( ccs_s4_list[ 4 ], "Z3" );;
gap> SetName( ccs_s4_list[ 5 ], "V4" );;
gap> SetName( ccs_s4_list[ 6 ], "D2" );;
gap> SetName( ccs_s4_list[ 7 ], "Z4" );;
gap> SetName( ccs_s4_list[ 8 ], "D3" );;
gap> SetName( ccs_s4_list[ 9 ], "D4" );;
gap> SetName( ccs_s4_list[ 10 ], "A4" );;
gap> SetName( ccs_s4_list[ 11 ], "S4" );;
gap> ccs_d3_list := ConjugacyClassesSubgroups( grp2 );;
gap> SetName( ccs_d3_list[ 1 ], "Z1" );;
gap> SetName( ccs_d3_list[ 2 ], "D1" );;
gap> SetName( ccs_d3_list[ 3 ], "Z3" );;
gap> SetName( ccs_d3_list[ 4 ], "D3" );;
Then, the following function will return the amalgamation notation of the given CCS.
gap> AmalgamationNotation( c );
"(D2[D1,Z3]D3)"
This example demonstrates how to decompose a CC and a irreducible
representation of
First, generate the group
gap> grp1 := SymmetricGroup( 4 );;
gap> grp2 := pDihedralGroup( 3 );;
gap> grp := DirectProduct( grp1, grp2 );;
Then, select a conjugacy class and a irreducible character of
gap> cc_list := ConjugacyClass( grp );;
gap> irr_list := Irr( grp );;
gap> cc := cc_list[ 9 ];;
gap> irr := irr_list[ 7 ];;
gap> DirectProductDecomposition( cc );
[ (2,3,4)^G, (1,2,3)^G ]
gap> DirectProductDecomposition( irr );
[ Character( CharacterTable( Sym( [ 1 .. 4 ] ) ), [ 1, 1, 1, 1, 1 ] ),
Character( CharacterTable( Sym( [ 1 .. 3 ] ) ), [ 2, 0, -1 ] ) ]
libBurnsideRing.g
libBurnsideRing.gd
libBurnsideRing.gi
libBasic
libGroup
libOrbitType
BurnsideRing( grp )
BurnsideRing
returns the Burnside ring induced by a group grp.
Please refer to Example 6.1 for arithmetic in the Burnside ring.
Basis( brng )
Basis
returns the canonical basis of brng as a free module over integers.
UnderlyingGroup( brng )
UnderlyingGroup
returns the the group by which brng is induced.
Dimension( brng )
Dimension
returns the dimension of brng as a free module over integers.
Length( e )
Length
returns the length of a Burnside ring element, which is the length of the
summation.
BasicDegree( char )
BasicDegree
returns the basic degree of a given chararcter char.
This example demonstrates how to perform arithmetic in Burnside ring
First, generate Burnside ring
gap> grp := SymmetricGroup( 4 );
Sym( [ 1 .. 4 ] )
gap> brng := BurnsideRing( grp );
BurnsideRing( Sym( [ 1 .. 4 ] ) )
Let us take two elements in
gap> a := Basis( brng )[ 4 ];
<1(4)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
gap> b := Basis( brng )[ 8 ];
<1(8)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
gap> a + b;
<1(4)+1(8)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
gap> a * b;
<1(1)+1(4)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
gap> 3 * (a + b);
<3(4)+3(8)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
This example demonstrates how to calculate basic degree of
an irreducible
After performing Example 6.1, select an irreducible character.
gap> char := Irr( grp )[ 2 ];
Character( CharacterTable( Sym( [ 1 .. 4 ] ) ), [ 3, -1, -1, 0, 1 ] )
gap> bdeg := BasicDegree( char );
<1(1)-1(3)-1(4)-1(7)+1(11)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
Then, compute the square of the basic degree and compare with the
multiplicative identity of
gap> bdeg^2;
<1(11)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
gap> One( brng );
<1(11)> in BurnsideRing( Sym( [ 1 .. 4 ] ) )
gap> bdeg^2 = One( brng );
true