|
| 1 | +############################################################################# |
| 2 | +## |
| 3 | +#A InvariantBilinearFormUpToScalars( <matgrp> ) |
| 4 | +## |
| 5 | +## <#GAPDoc Label="InvariantBilinearFormUpToScalars"> |
| 6 | +## <ManSection> |
| 7 | +## <Attr Name="InvariantBilinearFormUpToScalars" Arg='matgrp'/> |
| 8 | +## |
| 9 | +## <Description> |
| 10 | +## This attribute describes a bilinear form that is invariant up to scalars |
| 11 | +## under the matrix group <A>matgrp</A>. |
| 12 | +## The form is given by a record with the component <C>matrix</C> |
| 13 | +## which is a matrix <M>J</M> such that for every generator <M>g</M> of |
| 14 | +## <A>matgrp</A> the equation <M>g \cdot J \cdot g^{tr} = \lambda(g) J</M> |
| 15 | +## holds, for <M>\lambda(g)</M> in the |
| 16 | +## <Ref Attr="FieldOfMatrixGroup" BookName="ref"/> value of <A>matgrp</A>. |
| 17 | +## </Description> |
| 18 | +## </ManSection> |
| 19 | +## <#/GAPDoc> |
| 20 | +## |
| 21 | +DeclareAttribute( "InvariantBilinearFormUpToScalars", IsMatrixGroup ); |
| 22 | + |
| 23 | + |
| 24 | +############################################################################# |
| 25 | +## |
| 26 | +#P IsFullSubgroupGLRespectingBilinearFormUpToScalars( <matgrp> ) |
| 27 | +## |
| 28 | +## <#GAPDoc Label="IsFullSubgroupGLRespectingBilinearFormUpToScalars"> |
| 29 | +## <ManSection> |
| 30 | +## <Prop Name="IsFullSubgroupGLRespectingBilinearFormUpToScalars" |
| 31 | +## Arg='matgrp'/> |
| 32 | +## |
| 33 | +## <Description> |
| 34 | +## This property tests whether the matrix group <A>matgrp</A> is the full |
| 35 | +## subgroup of GL respecting, up to scalars, the form stored as the value of |
| 36 | +## <Ref Attr="InvariantBilinearFormUpToScalars"/> for <A>matgrp</A>. |
| 37 | +## </Description> |
| 38 | +## </ManSection> |
| 39 | +## <#/GAPDoc> |
| 40 | +## |
| 41 | +DeclareProperty( "IsFullSubgroupGLRespectingBilinearFormUpToScalars", |
| 42 | + IsMatrixGroup ); |
| 43 | + |
| 44 | +InstallTrueMethod( IsGroup, |
| 45 | + IsFullSubgroupGLRespectingBilinearFormUpToScalars ); |
| 46 | + |
| 47 | + |
| 48 | +############################################################################# |
| 49 | +## |
| 50 | +#O ConformalSymplecticGroupCons( <filter>, <form> ) |
| 51 | +#O ConformalSymplecticGroupCons( <filter>, <matrix> ) |
| 52 | +#O ConformalSymplecticGroupCons( <filter>, <G> ) |
| 53 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <R> ) |
| 54 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <R>, <form> ) |
| 55 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <R>, <matrix> ) |
| 56 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <R>, <G> ) |
| 57 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <q> ) |
| 58 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <q>, <form> ) |
| 59 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <q>, <matrix> ) |
| 60 | +#O ConformalSymplecticGroupCons( <filter>, <d>, <q>, <G> ) |
| 61 | +## |
| 62 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsBilinearForm ] ); |
| 63 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsMatrixOrMatrixObj ] ); |
| 64 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsGroup ] ); |
| 65 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing ] ); |
| 66 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing, IsBilinearForm ] ); |
| 67 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing, IsMatrixOrMatrixObj ] ); |
| 68 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsRing, IsGroup ] ); |
| 69 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt ] ); |
| 70 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt, IsBilinearForm ] ); |
| 71 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt, IsMatrixOrMatrixObj ] ); |
| 72 | +DeclareConstructor( "ConformalSymplecticGroupCons", [ IsGroup, IsPosInt, IsPosInt, IsGroup ] ); |
| 73 | + |
| 74 | + |
| 75 | +############################################################################# |
| 76 | +## |
| 77 | +#F ConformalSymplecticGroup( [<filt>, ]<d>, <q>[, <form>] ) conf. sympl. gp. |
| 78 | +#F ConformalSymplecticGroup( [<filt>, ]<d>, <R>[, <form>] ) conf. sympl. gp. |
| 79 | +#F ConformalSymplecticGroup( [<filt>, ]<form> ) conformal symplectic group |
| 80 | +#F CSp( [<filt>, ]<d>, <q>[, <form>] ) conformal symplectic group |
| 81 | +#F CSp( [<filt>, ]<d>, <R>[, <form>] ) conformal symplectic group |
| 82 | +#F CSp( [<filt>, ]<form> ) conformal symplectic group |
| 83 | +## |
| 84 | +## <#GAPDoc Label="ConformalSymplecticGroup"> |
| 85 | +## <ManSection> |
| 86 | +## <Heading>ConformalSymplecticGroup</Heading> |
| 87 | +## <Func Name="ConformalSymplecticGroup" Arg='[filt, ]d, R[, form]' |
| 88 | +## Label="for dimension and a ring"/> |
| 89 | +## <Func Name="ConformalSymplecticGroup" Arg='[filt, ]d, q[, form]' |
| 90 | +## Label="for dimension and field size"/> |
| 91 | +## <Func Name="ConformalSymplecticGroup" Arg='[filt, ]form' |
| 92 | +## Label="for form"/> |
| 93 | +## <Func Name="CSp" Arg='[filt, ]d, R[, form]' |
| 94 | +## Label="for dimension and a ring"/> |
| 95 | +## <Func Name="CSp" Arg='[filt, ]d, q[, form]' |
| 96 | +## Label="for dimension and field size"/> |
| 97 | +## <Func Name="CSp" Arg='[filt, ]form' |
| 98 | +## Label="for form"/> |
| 99 | +## |
| 100 | +## <Description> |
| 101 | +## constructs a group isomorphic to the conformal symplectic group |
| 102 | +## CSp( <A>d</A>, <A>R</A> ) of those <M><A>d</A> \times <A>d</A></M> |
| 103 | +## matrices over the ring <A>R</A> or the field with <A>q</A> elements, |
| 104 | +## respectively, |
| 105 | +## that respect a fixed nondegenerate symplectic form up to scalars, |
| 106 | +## in the category given by the filter <A>filt</A>. |
| 107 | +## <P/> |
| 108 | +## Currently only finite fields <A>R</A> are supported. |
| 109 | +## <P/> |
| 110 | +## If <A>filt</A> is not given it defaults to |
| 111 | +## <Ref Filt="IsMatrixGroup" BookName="ref"/>, |
| 112 | +## and the returned group is the conformal symplectic group itself. |
| 113 | +## Another supported value for <A>filt</A> is |
| 114 | +## <Ref Filt="IsPermGroup" BookName="ref"/>; |
| 115 | +## in this case, the argument <A>form</A> is not supported. |
| 116 | +## <P/> |
| 117 | +## If the arguments describe a matrix group over a finite field then |
| 118 | +## the desired bilinear form can be specified via <A>form</A>, |
| 119 | +## which can be either a matrix |
| 120 | +## or a form object in <Ref Filt="IsBilinearForm"/> |
| 121 | +## or a group with stored |
| 122 | +## <Ref Attr="InvariantBilinearForm" BookName="ref"/> or |
| 123 | +## <Ref Attr="InvariantBilinearFormUpToScalars"/> value |
| 124 | +## (and then this form is taken). |
| 125 | +## <P/> |
| 126 | +## A given <A>form</A> determines and <A>d</A>, and also <A>R</A> |
| 127 | +## except if <A>form</A> is a matrix that does not store its |
| 128 | +## <Ref Attr="BaseDomain" Label="for a matrix object" BookName="ref"/> value. |
| 129 | +## These parameters can be entered, and an error is signalled if they do |
| 130 | +## not fit to the given <A>form</A>. |
| 131 | +## <P/> |
| 132 | +## If <A>form</A> is not given then a default is chosen as described in the |
| 133 | +## introduction to Section <Ref Sect="Classical Groups" BookName="ref"/>. |
| 134 | +## <P/> |
| 135 | +## <Example><![CDATA[ |
| 136 | +## gap> g:= ConformalSymplecticGroup( 4, 2 ); |
| 137 | +## CSp(4,2) |
| 138 | +## gap> Size( g ); |
| 139 | +## 720 |
| 140 | +## gap> StructureDescription( g ); |
| 141 | +## "S6" |
| 142 | +## gap> ConformalSymplecticGroup( IsPermGroup, 4, 2 ); |
| 143 | +## Perm_CSp(4,2) |
| 144 | +## ]]></Example> |
| 145 | +## </Description> |
| 146 | +## </ManSection> |
| 147 | +## <#/GAPDoc> |
| 148 | +## |
| 149 | +DeclareGlobalFunction( "ConformalSymplecticGroup" ); |
| 150 | + |
| 151 | +DeclareSynonym( "CSp", ConformalSymplecticGroup ); |
| 152 | + |
0 commit comments