home *** CD-ROM | disk | FTP | other *** search
/ Math Solutions 1995 October / Math_Solutions_CD-ROM_Walnut_Creek_October_1995.iso / pc / mac / discrete / doc / matgrp.tex < prev    next >
Encoding:
Text File  |  1993-05-05  |  7.7 KB  |  195 lines

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. %%
  3. %A  matgrp.tex                  GAP documentation            Martin Schoenert
  4. %%
  5. %A  @(#)$Id: matgrp.tex,v 3.4 1993/02/19 10:48:42 gap Exp $
  6. %%
  7. %Y  Copyright 1990-1992,  Lehrstuhl D fuer Mathematik,  RWTH Aachen,  Germany
  8. %%
  9. %%  This file describes matrix group and their implementation.
  10. %%
  11. %H  $Log: matgrp.tex,v $
  12. %H  Revision 3.4  1993/02/19  10:48:42  gap
  13. %H  adjustments in line length and spelling
  14. %H
  15. %H  Revision 3.3  1993/02/12  16:44:35  felsch
  16. %H  examples adjusted to line length 72
  17. %H
  18. %H  Revision 3.2  1993/02/05  10:51:35  felsch
  19. %H  example fixed
  20. %H
  21. %H  Revision 3.1  1992/04/04  15:56:52  martin
  22. %H  initial revision under RCS
  23. %H
  24. %%
  25. \Chapter{Matrix Groups}
  26.  
  27. A *matrix group* is  a group of invertable square  matrices (see  chapter
  28. "Matrices").   In {\GAP}  you can define matrix  groups of matrices  over
  29. each of the fields that {\GAP} supports, i.e., the  rationals, cyclotomic
  30. extensions of the rationals, and finite fields (see chapters "Rationals",
  31. "Cyclotomics", and "Finite Fields").
  32.  
  33. You  define a matrix  group in {\GAP} by calling  'Group'  (see  "Group")
  34. passing the generating matrices as arguments.
  35.  
  36. |    gap> m1 := [ [ Z(3)^0, Z(3)^0,   Z(3) ],
  37.     >            [   Z(3), 0*Z(3),   Z(3) ],
  38.     >            [ 0*Z(3),   Z(3), 0*Z(3) ] ];;
  39.     gap> m2 := [ [   Z(3),   Z(3), Z(3)^0 ],
  40.     >            [   Z(3), 0*Z(3),   Z(3) ],
  41.     >            [ Z(3)^0, 0*Z(3),   Z(3) ] ];;
  42.     gap> m := Group( m1, m2 );
  43.     Group( [ [ Z(3)^0, Z(3)^0, Z(3) ], [ Z(3), 0*Z(3), Z(3) ],
  44.       [ 0*Z(3), Z(3), 0*Z(3) ] ],
  45.     [ [ Z(3), Z(3), Z(3)^0 ], [ Z(3), 0*Z(3), Z(3) ],
  46.       [ Z(3)^0, 0*Z(3), Z(3) ] ] )|
  47.  
  48. However,  currently {\GAP} can only  compute  with finite  matrix groups.
  49. Also computations with large matrix groups are not done very efficiently.
  50. We hope to improve this situation in the future, but currently you should
  51. be careful not to try too large matrix groups.
  52.  
  53. Because  matrix  groups are just a special  case of  domains  all the set
  54. theoretic functions such as 'Size' and  'Intersection'  are applicable to
  55. matrix  groups  (see chapter  "Domains"  and  "Set  Functions for  Matrix
  56. Groups").
  57.  
  58. Also matrix groups are  of course groups, so all the group functions such
  59. as 'Centralizer' and 'DerivedSeries' are applicable to matrix groups (see
  60. chapter "Groups" and "Group Functions for Matrix Groups").
  61.  
  62. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  63. \Section{Set Functions for Matrix Groups}
  64. \index{in!for matrix groups}
  65. \index{Size!for matrix groups}
  66. \index{Intersection!for matrix groups}
  67. \index{Random!for matrix groups}
  68.  
  69. As already  mentioned in the introduction of  this chapter matrix  groups
  70. are   domains.    All   set  theoretic  functions  such   as  'Size'  and
  71. 'Intersections'  are  thus  applicable  to  matrix groups.   This section
  72. describes  how  these  functions  are  implemented  for  matrix   groups.
  73. Functions  not  mentioned here either  inherit the default  group methods
  74. described  in "Set Functions for Groups" or the default  method mentioned
  75. in the respective sections.
  76.  
  77. To compute with a matrix group <m>, {\GAP} computes  the operation of the
  78. matrix group on the  underlying vector space (more precisely the union of
  79. the orbits of the parent of <m>  on the standard basis vectors).  Then it
  80. works with the  thus  defined permutation group  <p>,  which is of course
  81. isomorphic  to  <m>, and  finally  translates  the  results back into the
  82. matrix group.
  83.  
  84. \vspace{5mm}
  85. '<obj> in <m>'
  86.  
  87. To test if an object <obj> lies in a matrix group <m>, {\GAP} first tests
  88. whether <obj> is a invertable square matrix of the same dimensions as the
  89. matrices of  <m>.   If  it is, {\GAP} tests  whether  <obj> permutes  the
  90. vectors in  the union of the orbits of <m> on the standard basis vectors.
  91. If it does,  {\GAP}  takes this permutation and tests whether it lies  in
  92. <p>.
  93.  
  94. \vspace{5mm}
  95. 'Size( <m> )'
  96.  
  97. To compute the size of the matrix group <m>, {\GAP} computes the size  of
  98. the isomorphic permutation group <p>.
  99.  
  100. \vspace{5mm}
  101. 'Intersection( <m1>, <m2> )'
  102.  
  103. To compute the intersection of two subgroups  <m1> and <m2> with a common
  104. parent  matrix   group  <m>,   {\GAP}   intersects  the  images  of   the
  105. corresponding  permutation subgroups  <p1>  and <p2>  of  <p>.   Then  it
  106. translates  the  generators  of   the  intersection  of  the  permutation
  107. subgroups  back to matrices.  The  intersection of  <m1> and  <m2> is the
  108. subgroup  of  <m> generated  by those matrices.   If <m1> and <m2> do not
  109. have a common parent group, or if only one  of them is a matrix group and
  110. the  other  is a  set of  matrices,  the  default  method  is  used  (see
  111. "Intersection").
  112.  
  113. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  114. \Section{Group Functions for Matrix Groups}
  115. \index{Centralizer!for matrix groups}
  116. \index{Normalizer!for matrix groups}
  117. \index{SylowSubgroup!for matrix groups}
  118. \index{ConjugacyClasses!for matrix groups}
  119. \index{PermGroup!for matrix groups}
  120. \index{Stabilizer!for matrix groups}
  121. \index{RepresentativeOperation!for matrix groups}
  122.  
  123. As already mentioned  in  the introduction of this  chapter matrix groups
  124. are  after  all group.  All group functions  such  as  'Centralizer'  and
  125. 'DerivedSeries'  are  thus  applicable  to  matrix groups.  This  section
  126. describes  how  these  functions  are  implemented  for   matrix  groups.
  127. Functions not mentioned here  either inherit  the  default  group methods
  128. described in the respective sections.
  129.  
  130. To compute with a  matrix group <m>, {\GAP} computes the operation of the
  131. matrix  group on the underlying vector space (more precisely the union of
  132. the orbits of the parent of <m> on the standard basis vectors).   Then it
  133. works  with  the thus defined permutation  group <p>, which is of  course
  134. isomorphic to  <m>, and  finally  translates the results  back  into  the
  135. matrix group.
  136.  
  137. \vspace{5mm}
  138. 'Centralizer( <m>, <u> )' \\
  139. 'Normalizer( <m>, <u> )' \\
  140. 'SylowSubgroup( <m>, <p> )' \\
  141. 'ConjugacyClasses( <m> )'
  142.  
  143. This functions  all work by solving the  problem in the permutation group
  144. <p> and translating the result back.
  145.  
  146. \vspace{5mm}
  147. 'PermGroup( <m> )'
  148.  
  149. This computes a permutation representation  of <m> by letting <m> operate
  150. on the  union  of  the  orbits of <m> (*not*  its parent) on the standard
  151. basis vectors.
  152.  
  153. \vspace{5mm}
  154. 'Stabilizer( <m>, <v> )'
  155.  
  156. The  stabilizer of  a vector <v> that lies in the  union of the orbits of
  157. the parent of <m> on  the standard basis  vectors  is computed by finding
  158. the stabilizer  of the corresponding point in  the permutation  group <p>
  159. and  translating  this back.   Other stabilizers are  computed  with  the
  160. default method (see "Stabilizer").
  161.  
  162. \vspace{5mm}
  163. 'RepresentativeOperation( <m>, <v1>, <v2> )'
  164.  
  165. If <v1> and <v2> are vectors that both lie in the union of the  orbits of
  166. the   parent   group   of   <m>    on   the   standard   basis   vectors,
  167. 'RepresentativeOperation' finds a permutation in <p> that takes the point
  168. corresponding  to <v1> to  the point corresponding to  <v2>.  If no  such
  169. permutation  exists, it returns 'false'.   Otherwise  it  translates  the
  170. permutation back to a matrix.
  171.  
  172. \vspace{5mm}
  173. 'RepresentativeOperation( <m>, <m1>, <m2> )'
  174.  
  175. If <m1> and <m2> are  matrices in <m>,  'RepresentativeOperation' finds a
  176. permutation in <p> that conjugates the permutation corresponding to  <m1>
  177. to the permutation corresponding to <m2>.  If no such permutation exists,
  178. it returns 'false'.   Otherwise it  translates the permutation back to  a
  179. matrix.
  180.  
  181. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  182. %%
  183. %E  Emacs . . . . . . . . . . . . . . . . . . . . . local Emacs variables
  184. %%
  185. %%  Local Variables:
  186. %%  mode:               outline
  187. %%  outline-regexp:     "\\\\Chapter\\|\\\\Section"
  188. %%  fill-column:        73
  189. %%  eval:               (hide-body)
  190. %%  End:
  191. %%
  192.  
  193.  
  194.  
  195.