Skip to content
Open
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: 1 addition & 0 deletions init.g
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@

ReadPackage("forms","lib/forms.gd");
ReadPackage("forms","lib/recognition.gd");
ReadPackage("forms","lib/conformal.gd");
152 changes: 152 additions & 0 deletions lib/conformal.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
#############################################################################
##
#A InvariantBilinearFormUpToScalars( <matgrp> )
##
## <#GAPDoc Label="InvariantBilinearFormUpToScalars">
## <ManSection>
## <Attr Name="InvariantBilinearFormUpToScalars" Arg='matgrp'/>
##
## <Description>
## This attribute describes a bilinear form that is invariant up to scalars
## under the matrix group <A>matgrp</A>.
## The form is given by a record with the component <C>matrix</C>
## which is a matrix <M>J</M> such that for every generator <M>g</M> of
## <A>matgrp</A> the equation <M>g \cdot J \cdot g^{tr} = \lambda(g) J</M>
## holds, for <M>\lambda(g)</M> in the
## <Ref Attr="FieldOfMatrixGroup" BookName="ref"/> value of <A>matgrp</A>.
## </Description>
## </ManSection>
## <#/GAPDoc>
##
DeclareAttribute( "InvariantBilinearFormUpToScalars", IsMatrixGroup );


#############################################################################
##
#P IsFullSubgroupGLRespectingBilinearFormUpToScalars( <matgrp> )
##
## <#GAPDoc Label="IsFullSubgroupGLRespectingBilinearFormUpToScalars">
## <ManSection>
## <Prop Name="IsFullSubgroupGLRespectingBilinearFormUpToScalars"
## Arg='matgrp'/>
##
## <Description>
## This property tests whether the matrix group <A>matgrp</A> is the full
## subgroup of GL respecting, up to scalars, the form stored as the value of
## <Ref Attr="InvariantBilinearFormUpToScalars"/> for <A>matgrp</A>.
## </Description>
## </ManSection>
## <#/GAPDoc>
##
DeclareProperty( "IsFullSubgroupGLRespectingBilinearFormUpToScalars",
IsMatrixGroup );

InstallTrueMethod( IsGroup,
IsFullSubgroupGLRespectingBilinearFormUpToScalars );


#############################################################################
##
#O ConformalSymplecticGroupCons( <filter>, <form> )
#O ConformalSymplecticGroupCons( <filter>, <matrix> )
#O ConformalSymplecticGroupCons( <filter>, <G> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <R> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <R>, <form> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <R>, <matrix> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <R>, <G> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <q> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <q>, <form> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <q>, <matrix> )
#O ConformalSymplecticGroupCons( <filter>, <d>, <q>, <G> )
##
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsBilinearForm ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsMatrixOrMatrixObj ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsGroup ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing, IsBilinearForm ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing, IsMatrixOrMatrixObj ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing, IsGroup ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt, IsBilinearForm ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt, IsMatrixOrMatrixObj ] );
DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt, IsGroup ] );


#############################################################################
##
#F ConformalSymplecticGroup( [<filt>, ]<d>, <q>[, <form>] ) conf. sympl. gp.
#F ConformalSymplecticGroup( [<filt>, ]<d>, <R>[, <form>] ) conf. sympl. gp.
#F ConformalSymplecticGroup( [<filt>, ]<form> ) conformal symplectic group
#F CSp( [<filt>, ]<d>, <q>[, <form>] ) conformal symplectic group
#F CSp( [<filt>, ]<d>, <R>[, <form>] ) conformal symplectic group
#F CSp( [<filt>, ]<form> ) conformal symplectic group
##
## <#GAPDoc Label="ConformalSymplecticGroup">
## <ManSection>
## <Heading>ConformalSymplecticGroup</Heading>
## <Func Name="ConformalSymplecticGroup" Arg='[filt, ]d, R[, form]'
## Label="for dimension and a ring"/>
## <Func Name="ConformalSymplecticGroup" Arg='[filt, ]d, q[, form]'
## Label="for dimension and field size"/>
## <Func Name="ConformalSymplecticGroup" Arg='[filt, ]form'
## Label="for form"/>
## <Func Name="CSp" Arg='[filt, ]d, R[, form]'
## Label="for dimension and a ring"/>
## <Func Name="CSp" Arg='[filt, ]d, q[, form]'
## Label="for dimension and field size"/>
## <Func Name="CSp" Arg='[filt, ]form'
## Label="for form"/>
##
## <Description>
## constructs a group isomorphic to the conformal symplectic group
## CSp( <A>d</A>, <A>R</A> ) of those <M><A>d</A> \times <A>d</A></M>
## matrices over the ring <A>R</A> or the field with <A>q</A> elements,
## respectively,
## that respect a fixed nondegenerate symplectic form up to scalars,
## in the category given by the filter <A>filt</A>.
## <P/>
## Currently only finite fields <A>R</A> are supported.
## <P/>
## If <A>filt</A> is not given it defaults to
## <Ref Filt="IsMatrixGroup" BookName="ref"/>,
## and the returned group is the conformal symplectic group itself.
## Another supported value for <A>filt</A> is
## <Ref Filt="IsPermGroup" BookName="ref"/>;
## in this case, the argument <A>form</A> is not supported.
## <P/>
## If the arguments describe a matrix group over a finite field then
## the desired bilinear form can be specified via <A>form</A>,
## which can be either a matrix
## or a form object in <Ref Filt="IsBilinearForm"/>
## or a group with stored
## <Ref Attr="InvariantBilinearForm" BookName="ref"/> or
## <Ref Attr="InvariantBilinearFormUpToScalars"/> value
## (and then this form is taken).
## <P/>
## A given <A>form</A> determines and <A>d</A>, and also <A>R</A>
## except if <A>form</A> is a matrix that does not store its
## <Ref Attr="BaseDomain" Label="for a matrix object" BookName="ref"/> value.
## These parameters can be entered, and an error is signalled if they do
## not fit to the given <A>form</A>.
## <P/>
## If <A>form</A> is not given then a default is chosen as described in the
## introduction to Section <Ref Sect="Classical Groups" BookName="ref"/>.
## <P/>
## <Example><![CDATA[
## gap> g:= ConformalSymplecticGroup( 4, 2 );
## CSp(4,2)
## gap> Size( g );
## 720
## gap> StructureDescription( g );
## "S6"
## gap> ConformalSymplecticGroup( IsPermGroup, 4, 2 );
## Perm_CSp(4,2)
## ]]></Example>
## </Description>
## </ManSection>
## <#/GAPDoc>
##
DeclareGlobalFunction( "ConformalSymplecticGroup" );

DeclareSynonym( "CSp", ConformalSymplecticGroup );

Loading
Loading