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): 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))
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))
def tensor_product_of_kirillov_reshetikhin_crystals(self): """ Return the corresponding tensor product of Kirillov-Reshetikhin crystals. EXAMPLES:: sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[3,1],[2,2]]) sage: KRT.tensor_product_of_kirillov_reshetikhin_crystals() Full tensor product of the crystals [Kirillov-Reshetikhin crystal of type ['A', 3, 1] with (r,s)=(3,1), Kirillov-Reshetikhin crystal of type ['A', 3, 1] with (r,s)=(2,2)] TESTS:: sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 1], [[4,1], [3,3]]) sage: KR1 = crystals.KirillovReshetikhin(['D', 4, 1], 4, 1) sage: KR2 = crystals.KirillovReshetikhin(['D', 4, 1], 3, 3) sage: T = crystals.TensorProduct(KR1, KR2) sage: T == KRT.tensor_product_of_kirillov_reshetikhin_crystals() True sage: T is KRT.tensor_product_of_kirillov_reshetikhin_crystals() True """ return FullTensorProductOfRegularCrystals( tuple(x.kirillov_reshetikhin_crystal() for x in self.crystals), cartan_type=self.cartan_type())
def _module_generators_brute_force(self): """ Return the module generators of ``self`` by brute force searching through all elements of ``self`` as a Cartesian product. EXAMPLES:: sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A',3,1], [[1,3], [2,1]]) sage: tuple(KRT.module_generators) ([[1, 1, 1]] (X) [[1], [2]], [[1, 1, 3]] (X) [[1], [2]]) sage: KRT._module_generators_brute_force() ([[1, 1, 1]] (X) [[1], [2]], [[1, 1, 3]] (X) [[1], [2]]) """ index_set = self.cartan_type().classical().index_set() return tuple(x for x in FullTensorProductOfRegularCrystals.__iter__(self) if x.is_highest_weight(index_set))