.. _SectGrpLieTwistedTori:

.. _twisted-tori:

Twisted Tori
============

The functionality presented here deals with the computation of the twisted tori
of a finite group of Lie type.

Note that for a given group :math:`G(k)`, the twisted tori are returned as
subgroups of the standard torus of :math:`G(K)` for the smallest field extension
:math:`K` of :math:`k`, where this is possible.

For finite fields and an untwisted group of Lie type :math:`G(k)`, a twisted
torus :math:`T_w(k)` of :math:`G(k)` has the form

.. math:: T_w(k) = \{ t\in T(K) | t^{\sigma w} = t \},

where :math:`T(K)` is the standard :math:`K`-split torus of :math:`G(K)`,
:math:`\sigma` is the generator of the Galois group
:math:`{\operatorname{Gal}}(K:k)` and :math:`w` is an element of the Weyl group
of :math:`G(k)`.

.. magma:function:: TwistedTorusOrder(R, w)
   :input_types: RootDtm, GrpPermElt
   :output_types: SeqEnum
   :label: TwistedTorusOrder_RootDtm_GrpPermElt

   Given the root datum :math:`R` and a Weyl group element :math:`w`, computes the
   orders of the cyclic components of the twisted torus
   :math:`T_w(k)\subset G(R,k)` as sequence of polynomials in :math:`q`, the order
   of the field :math:`k`.

.. magma:function:: TwistedToriOrders(G)
   :input_types: GrpLie
   :output_types: SeqEnum
   :label: TwistedToriOrders_GrpLie

.. magma:function:: TwistedToriOrders(R)
   :input_types: RootDtm
   :output_types: SeqEnum
   :label: TwistedToriOrders_RootDtm

   Given a group of Lie type :math:`G` or a root datum :math:`R`, takes for every
   conjugacy class of the Weyl group of :math:`G` a representative :math:`w`, and
   computes ``TwistedTorusOrder(R, w)``. Returns the sequence of the lists
   consisting of ``TwistedTorusOrder(R, w)`` and :math:`w` for every conjugacy
   class.

.. magma:function:: TwistedTorus(G, w)
   :input_types: GrpLie, GrpPermElt
   :output_types: List
   :label: TwistedTorus_GrpLie_GrpPermElt

   Computes the twisted torus :math:`T_w(k)` of the group of Lie type :math:`G` for
   the given element :math:`w` of the Weyl group of :math:`G`. Returned is the list
   consisting of three elements, first of them being the sequence of orders of
   cyclic parts of the torus, the second being the sequence of generators of the
   respective orders and the third being :math:`w`. See :cite:`SH` for
   the algorithm used.

.. magma:function:: TwistedTori(G)
   :input_types: GrpLie
   :output_types: SeqEnum
   :label: TwistedTori_GrpLie

   Computes one twisted torus :math:`T_w(k)` of the group of Lie type :math:`G` for
   each conjugacy class :math:`w^W` of the Weyl group :math:`W` of :math:`G`. A
   sequence of them is returned. See :cite:`SH` for the algorithm used.

.. magma:example:: Example: Grp Lie Tori
   :label: GrpLieTori

   We compute all twisted tori of :math:`A_1(5)`: As we may notice, the second one
   is contained in the group over the quadratic field extension:

   .. code-block:: magma

      > G := GroupOfLieType("A1", 5);
      > TwistedToriOrders(G);
      [ [*
          [
              q - 1
          ],
          Id($)
      *], [*
          [
              q + 1
          ],
          (1, 2)
      *] ]
      > TwistedTori(G);
      [ [*
          [ 4 ],
          [ (2)  ],
          Id($)
      *], [*
          [ 6 ],
          [ ( k.1^4)  ],
          (1, 2)
      *] ]
      > Universe($1[2][2]);
      $: Group of Lie type A1 over Finite field of size 5^2

.. magma:example:: Example: Grp Lie Tori2
   :label: GrpLieTori2

   These are the orders of the decompositions of all (up to conjugacy) maximal tori
   of the group :math:`G_2(q)` as polynomials in :math:`q`:

   .. code-block:: magma

      > R := RootDatum("G2");
      > [ t[1] : t in TwistedToriOrders(R) ];
      [
          [  q - 1,  q - 1  ],
          [  q + 1,  q + 1  ],
          [  q^2 - 1        ],
          [  q^2 - 1        ],
          [  q^2 + q + 1    ],
          [  q^2 - q + 1    ]
      ]
