.. _SectRDProp:

.. _properties-root-datum:

Properties of Root Data
=======================

.. magma:function:: IsFinite(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsFinite_RootStr

   Returns ``true`` for any root datum :math:`R`.

.. magma:function:: IsIrreducible(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsIrreducible_RootStr

   Returns ``true`` if, and only if, the root datum :math:`R` is irreducible.

.. magma:function:: IsAbsolutelyIrreducible(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsAbsolutelyIrreducible_RootStr

   Returns ``true`` if, and only if, the split version of the root datum :math:`R`
   is irreducible.

.. magma:function:: IsProjectivelyIrreducible(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsProjectivelyIrreducible_RootStr

   Returns ``true`` if, and only if, the quotient of the root datum :math:`R`
   modulo its radical is irreducible. This is equivalent for :math:`R` to have a
   connected Coxeter diagram.

.. magma:function:: IsReduced(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsReduced_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is reduced.

.. magma:function:: IsSemisimple(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsSemisimple_RootStr

   Returns ``true`` if, and only if, the root datum :math:`R` is semisimple,
   i.e. its rank is equal to its dimension.

.. magma:function:: IsCrystallographic(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsCrystallographic_RootStr

   Returns ``true`` for any root datum :math:`R`.

.. magma:function:: IsSimplyLaced(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsSimplyLaced_RootStr

   Returns ``true`` if, and only if, the root datum :math:`R` is simply laced,
   i.e. its Dynkin diagram contains no multiple bonds.

.. magma:function:: \name{IsAdjointR}{IsAdjoint}(R)
   :input_types: RootDtm
   :output_types: BoolElt

   Returns ``true`` if, and only if, the root datum :math:`R` is adjoint, i.e. its
   isogeny group is trivial.

.. magma:function:: IsWeaklyAdjoint(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsWeaklyAdjoint_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is weakly adjoint,
   i.e. its isogeny group is isomorphic to :math:`{\mathbb{Z}}^n`, where :math:`n`
   is :math:`\dim(R) - {\rm rk}(R)`. Note that if :math:`R` is semisimple then this
   function is identical to :ref:`IsAdjointR`.

.. magma:function:: \name{IsSimplyConnectedR}{IsSimplyConnected}(R)
   :input_types: RootDtm
   :output_types: BoolElt

   Returns ``true`` if, and only if, the root datum :math:`R` is simply connected,
   i.e. its isogeny group is equal to the fundamental group, i.e. its coisogeny
   group is trivial.

.. magma:function:: IsWeaklySimplyConnected(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsWeaklySimplyConnected_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is weakly simply
   connected, i.e. its coisogeny group is isomorphic to :math:`{\mathbb{Z}}^n`,
   where :math:`n` is :math:`\dim(R) - {\rm rk}(R)`. Note that if :math:`R` is
   semisimple then this function is identical to .

.. magma:example:: Example: Properties
   :label: Properties

   For some of the exceptional isogeny classes, there is only one isomorphism class
   of root data, which is both adjoint and simply connected. There exist root data
   that are neither adjoint nor simply connected. Finally, we demonstrate a case
   where the root datum is not adjoint, but is weakly adjoint.

   .. code-block:: magma

      > R := RootDatum("A5 B2" : Isogeny := "SC");
      > IsIrreducible(R);
      false
      %%a> assert not $1;
      > IsSimplyLaced(R);
      false
      %%a> assert not $1;
      > IsSemisimple(R);
      true
      %%a> assert $1;
      > IsAdjoint(R);
      false
      %%a> assert not $1;
      > R := RootDatum("G2");
      > IsAdjoint(R);
      true
      %%a> assert $1;
      > IsSimplyConnected(R);
      true
      %%a> assert $1;
      > R := RootDatum("A3" : Isogeny := 2); 
      > IsAdjoint(R), IsSimplyConnected(R);
      false false
      > R := RootDatum("A2T1");
      > IsAdjoint(R), IsWeaklyAdjoint(R);
      false true
      > Dimension(R), Rank(R);
      3 2
      > G := IsogenyGroup(R); G; 
      Abelian Group isomorphic to Z
      Defined on 1 generator (free)

.. magma:function:: IsReduced(R)
   :input_types: RootStr
   :output_types: BoolElt
   :label: IsReduced_RootStr

   Returns ``true`` if, and only if, the root datum :math:`R` is reduced.

.. magma:function:: IsSplit(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsSplit_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is split, i.e. the
   :math:`\Gamma`-action is trivial.

.. magma:function:: IsTwisted(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsTwisted_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is twisted, i.e. the
   :math:`\Gamma`-action is not trivial.

.. magma:function:: IsQuasisplit(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsQuasisplit_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is quasisplit,
   i.e. the anisotropic subdatum is trivial.

.. magma:function:: IsInner(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsInner_RootDtm

.. magma:function:: IsOuter(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsOuter_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is inner (resp.
   outer).

.. magma:function:: IsAnisotropic(R)
   :input_types: RootDtm
   :output_types: BoolElt
   :label: IsAnisotropic_RootDtm

   Returns ``true`` if, and only if, the root datum :math:`R` is anisotropic,
   i.e. when :math:`X=X_0`.
