.. _SectGrpLieSub:

.. _create-new-root-datum:

Building Groups of Lie Type
===========================

Currently the only subgroups of a group of Lie type that can be constructed are
subsystem subgroups.

.. magma:function:: SubsystemSubgroup(G, a)
   :input_types: GrpLie, SetEnum
   :output_types: RootDtm
   :label: SubsystemSubgroup_GrpLie_SetEnum

   The subsystem subgroup of the group of Lie type :math:`G` generated by the
   standard maximal torus and the root subgroups with roots
   :math:`\alpha_{a_1},\dots,\alpha_{a_k}` where :math:`a=\{a_1,\dots,a_k\}` is a
   set of integers.

.. magma:function:: SubsystemSubgroup(G, s)
   :input_types: GrpLie, SeqEnum
   :output_types: RootDtm
   :label: SubsystemSubgroup_GrpLie_SeqEnum

   The subsystem subgroup of the group of Lie type :math:`G` generated by the
   standard maximal torus and the root subgroups with roots
   :math:`\alpha_{s_1},\dots,\alpha_{s_k}` where :math:`s=[s_1,\dots,s_k]` is a
   *sequence* of integers. In this version the roots must be simple in the root
   subdatum (i.e. none of them may be a summand of another) otherwise an error is
   signalled. The simple roots will appear in the subdatum in the given order.

.. magma:example:: Example: Root Subdata
   :label: RootSubdata

   .. code-block:: magma

      > G := GroupOfLieType("A4",Rationals());
      > PositiveRoots(G);
      {@
          (1 0 0 0),
          (0 1 0 0),
          (0 0 1 0),
          (0 0 0 1),
          (1 1 0 0),
          (0 1 1 0),
          (0 0 1 1),
          (1 1 1 0),
          (0 1 1 1),
          (1 1 1 1)
      @}
      > H := SubsystemSubgroup(G, [6,1,4]);
      > H;
      H: Group of Lie type A3 over Rational Field
      > PositiveRoots(H);
      {@
          (0 1 1 0),
          (1 0 0 0),
          (0 0 0 1),
          (1 1 1 0),
          (0 1 1 1),
          (1 1 1 1)
      @}
      > h := elt<H|<2,2>,1>;
      > h;  G!h;
      x2(2) n1
      x1(2) ( 1 -1  1 -1) n2 n3 n2

.. magma:function:: DirectProduct(G1, G2)
   :input_types: GrpLie, GrpLie
   :output_types: GrpLie
   :label: DirectProduct_GrpLie_GrpLie

   The direct product of the groups :math:`G_1` and :math:`G_2`. The two groups
   must have the same base ring.

.. magma:function:: Dual(G)
   :input_types: GrpLie
   :output_types: GrpLie
   :label: Dual_GrpLie

   The dual of the group of Lie type :math:`G`, obtained by swapping the roots and
   coroots.

.. magma:function:: SolubleRadical(G)
   :input_types: GrpLie
   :output_types: GrpLie
   :label: SolubleRadical_GrpLie

   The soluble radical of the group of Lie type :math:`G`.

.. magma:function:: StandardMaximalTorus(G)
   :input_types: GrpLie
   :output_types: GrpLie
   :label: StandardMaximalTorus_GrpLie

   The standard maximal torus of the group of Lie type :math:`G`.

.. magma:example:: Example: Direct Product Dual Radical
   :label: DirectProductDualRadical

   .. code-block:: magma

      > G1 := GroupOfLieType( "A5", GF(7) );
      > G2 := GroupOfLieType( "B4", GF(7) );
      > DirectProduct(G1, Dual(G2));
      $: Group of Lie type A5 C4 over Finite field of size 7
      > 
      > G := GroupOfLieType(StandardRootDatum("A",3), GF(17));
      > SolubleRadical(G);
      $: Torus group of Dimension 1 over Finite field of size 17
