def __init__(self, cartan_type, B):
        r"""
        Initialize ``self``.

        EXAMPLES::

            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1],[2,2]]); KRT
            Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and factor(s) ((3, 1), (2, 2))
            sage: TestSuite(KRT).run() # long time
            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,2]])
            sage: TestSuite(KRT).run() # long time
            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[3,1]])
            sage: TestSuite(KRT).run() # long time
            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[4,3]])
            sage: TestSuite(KRT).run() # long time
        """
        self.dims = B
        self.letters = CrystalOfLetters(cartan_type.classical())
        tensor_prod = tuple(KirillovReshetikhinTableaux(cartan_type, rect_dims[0], rect_dims[1])
                            for rect_dims in B)
        FullTensorProductOfRegularCrystals.__init__(self, tensor_prod, cartan_type=cartan_type)
        # This is needed to override the module_generators set in FullTensorProductOfRegularCrystals
        self.module_generators = HighestWeightTensorKRT(self)
        self.rename("Tensor product of Kirillov-Reshetikhin tableaux of type %s and factor(s) %s"%(\
          cartan_type, B))
    def __init__(self, cartan_type, B, biject_class):
        r"""
        Construct a tensor product of KR tableaux.

        INPUT:

        - ``cartan_type``    -- The crystal type and n value
        - ``B``              -- An (ordered) list of dimensions
        - ``biject_class``   -- The class the bijection creates

        The dimensions (i.e. `B`) is a list whose entries are lists of the
        form `[r, s]` which correspond to a tableau with `r` rows and `s`
        columns (or of shape `[r]*s`) and corresponds to a
        Kirillov-Reshetikhin crystal `B^{r,s}`.

        TESTS::

            sage: HW = HighestWeightTensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1], [2,2]]); HW # indirect doctest
            Highest weight tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and tableau shape(s) [[1, 1, 1], [2, 2]]
        """
        assert cartan_type.is_affine()

        self.affine_ct = cartan_type
        self.dims = B
        self.letters = CrystalOfLetters(cartan_type)
        self._bijection_class = biject_class
        tensorProd = []
        for rectDims in B:
            tensorProd.append(KirillovReshetikhinTableaux(self.letters.cartan_type(), rectDims[0], rectDims[1]))
        FullTensorProductOfRegularCrystals.__init__(self, tuple(tensorProd))
Beispiel #3
0
    def __init__(self, cartan_type, B):
        r"""
        Initialize ``self``.

        EXAMPLES::

            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1],[2,2]]); KRT
            Tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and factor(s) ((3, 1), (2, 2))
            sage: TestSuite(KRT).run() # long time
            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,2]])
            sage: TestSuite(KRT).run() # long time
            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[3,1]])
            sage: TestSuite(KRT).run() # long time
            sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[4,3]])
            sage: TestSuite(KRT).run() # long time
        """
        self.dims = B
        self.letters = CrystalOfLetters(cartan_type.classical())
        tensor_prod = tuple(
            KirillovReshetikhinTableaux(cartan_type, rect_dims[0],
                                        rect_dims[1]) for rect_dims in B)
        FullTensorProductOfRegularCrystals.__init__(self,
                                                    tensor_prod,
                                                    cartan_type=cartan_type)
        # This is needed to override the module_generators set in FullTensorProductOfRegularCrystals
        self.module_generators = HighestWeightTensorKRT(self)
        self.rename("Tensor product of Kirillov-Reshetikhin tableaux of type %s and factor(s) %s"%(\
          cartan_type, B))
    def __init__(self, cartan_type, B, biject_class):
        r"""
        Construct a tensor product of KR tableaux.

        INPUT:

        - ``cartan_type``    -- The crystal type and n value
        - ``B``              -- An (ordered) list of dimensions
        - ``biject_class``   -- The class the bijection creates

        The dimensions (i.e. `B`) is a list whose entries are lists of the
        form `[r, s]` which correspond to a tableau with `r` rows and `s`
        columns (or of shape `[r]*s`) and corresponds to a
        Kirillov-Reshetikhin crystal `B^{r,s}`.

        TESTS::

            sage: HW = HighestWeightTensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1], [2,2]]); HW # indirect doctest
            Highest weight tensor product of Kirillov-Reshetikhin tableaux of type ['A', 3, 1] and tableau shape(s) [[1, 1, 1], [2, 2]]
        """
        assert cartan_type.is_affine()

        self.affine_ct = cartan_type
        self.dims = B
        self.letters = CrystalOfLetters(cartan_type)
        self._bijection_class = biject_class
        tensorProd = []
        for rectDims in B:
            tensorProd.append(
                KirillovReshetikhinTableaux(self.letters.cartan_type(),
                                            rectDims[0], rectDims[1]))
        FullTensorProductOfRegularCrystals.__init__(self, tuple(tensorProd))