### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Crystals »

# Direct Sum of Crystals

class `sage.combinat.crystals.direct_sum.``DirectSumOfCrystals`(crystals, **options)

  Bases: `sage.sets.disjoint_union_enumerated_sets.DisjointUnionEnumeratedSets`

  Direct sum of crystals.

  Given a list of crystals \(B_0, \ldots, B_k\) of the same Cartan type, one can form the direct sum \(B_0 \oplus \cdots \oplus B_k\).

  INPUT:

  > - `crystals` – a list of crystals of the same Cartan type
  > - `keepkey` – a boolean

  The option `keepkey` is by default set to `False`, assuming that the crystals are all distinct. In this case the elements of the direct sum are just represented by the elements in the crystals \(B_i\). If the crystals are not all distinct, one should set the `keepkey` option to `True`. In this case, the elements of the direct sum are represented as tuples \((i, b)\) where \(b \in B_i\).

  EXAMPLES:

      sage: C = crystals.Letters(['A',2])
      sage: C1 = crystals.Tableaux(['A',2],shape=[1,1])
      sage: B = crystals.DirectSum([C,C1])
      sage: B.list()
      [1, 2, 3, [[1], [2]], [[1], [3]], [[2], [3]]]
      sage: [b.f(1) for b in B]
      [2, None, None, None, [[2], [3]], None]
      sage: B.module_generators
      [1, [[1], [2]]]

      sage: B = crystals.DirectSum([C,C], keepkey=True)
      sage: B.list()
      [(0, 1), (0, 2), (0, 3), (1, 1), (1, 2), (1, 3)]
      sage: B.module_generators
      [(0, 1), (1, 1)]
      sage: b = B( tuple([0,C(1)]) )
      sage: b
      (0, 1)
      sage: b.weight()
      (1, 0, 0)

  The following is required, because `DirectSumOfCrystals` takes the same arguments as `DisjointUnionEnumeratedSets` (which see for details).

  TESTS:

      sage: C = crystals.Letters(['A',2])
      sage: B = crystals.DirectSum([C,C], keepkey=True)
      sage: B
      Direct sum of the crystals Family (The crystal of letters for type ['A', 2], The crystal of letters for type ['A', 2])

      sage: TestSuite(C).run()

  class `Element`

    Bases: `sage.structure.element_wrapper.ElementWrapper`

    A class for elements of direct sums of crystals

    `e`(i)

      Returns the action of \(e_i\) on self.

      EXAMPLES:

          sage: C = crystals.Letters(['A',2])
          sage: B = crystals.DirectSum([C,C], keepkey=True)
          sage: [[b, b.e(2)] for b in B]
          [[(0, 1), None], [(0, 2), None], [(0, 3), (0, 2)], [(1, 1), None], [(1, 2), None], [(1, 3), (1, 2)]]

    `epsilon`(i)

      EXAMPLES:

          sage: C = crystals.Letters(['A',2])
          sage: B = crystals.DirectSum([C,C], keepkey=True)
          sage: b = B( tuple([0,C(2)]) )
          sage: b.epsilon(2)
          0

    `f`(i)

      Returns the action of \(f_i\) on self.

      EXAMPLES:

          sage: C = crystals.Letters(['A',2])
          sage: B = crystals.DirectSum([C,C], keepkey=True)
          sage: [[b,b.f(1)] for b in B]
          [[(0, 1), (0, 2)], [(0, 2), None], [(0, 3), None], [(1, 1), (1, 2)], [(1, 2), None], [(1, 3), None]]

    `phi`(i)

      EXAMPLES:

          sage: C = crystals.Letters(['A',2])
          sage: B = crystals.DirectSum([C,C], keepkey=True)
          sage: b = B( tuple([0,C(2)]) )
          sage: b.phi(2)
          1

    `weight`()

      Returns the weight of self.

      EXAMPLES:

          sage: C = crystals.Letters(['A',2])
          sage: B = crystals.DirectSum([C,C], keepkey=True)
          sage: b = B( tuple([0,C(2)]) )
          sage: b
          (0, 2)
          sage: b.weight()
          (0, 1, 0)

### Navigation

- index
- modules |
- next |
- previous |
- Combinatorics »
- Crystals »