def __init__(self, dominant_weight): """ EXAMPLES:: sage: C=CartanType(['E',6]) sage: La=C.root_system().weight_lattice().fundamental_weights() sage: p2=2*La[2] sage: p1=La[2] sage: p0=0*La[2] sage: T = crystals.HighestWeight(0*La[2]) sage: T.cardinality() 1 sage: T = crystals.HighestWeight(La[2]) sage: T.cardinality() 78 sage: T = crystals.HighestWeight(2*La[2]) sage: T.cardinality() 2430 """ B1 = CrystalOfLetters(['E',6]) B6 = CrystalOfLetters(['E',6], dual = True) self.column_crystal = {1 : B1, 6 : B6, 4 : TensorProductOfCrystals(B1,B1,B1,generators=[[B1([-3,4]),B1([-1,3]),B1([1])]]), 3 : TensorProductOfCrystals(B1,B1,generators=[[B1([-1,3]),B1([1])]]), 5 : TensorProductOfCrystals(B6,B6,generators=[[B6([5,-6]),B6([6])]]), 2 : TensorProductOfCrystals(B6,B1,generators=[[B6([2,-1]),B1([1])]])} FiniteDimensionalHighestWeightCrystal_TypeE.__init__(self, dominant_weight)
def __init__(self, dominant_weight): """ EXAMPLES:: sage: C=CartanType(['E',7]) sage: La=C.root_system().weight_lattice().fundamental_weights() sage: T = crystals.HighestWeight(0*La[1]) sage: T.cardinality() 1 sage: T = crystals.HighestWeight(La[1]) sage: T.cardinality() 133 sage: T = crystals.HighestWeight(2*La[1]) sage: T.cardinality() 7371 """ B = CrystalOfLetters(['E',7]) self.column_crystal = {7 : B, 1 : TensorProductOfCrystals(B,B,generators=[[B([-7,1]),B([7])]]), 2 : TensorProductOfCrystals(B,B,B,generators=[[B([-1,2]),B([-7,1]),B([7])]]), 3 : TensorProductOfCrystals(B,B,B,B,generators=[[B([-2,3]),B([-1,2]),B([-7,1]),B([7])]]), 4 : TensorProductOfCrystals(B,B,B,B,generators=[[B([-5,4]),B([-6,5]),B([-7,6]),B([7])]]), 5 : TensorProductOfCrystals(B,B,B,generators=[[B([-6,5]),B([-7,6]),B([7])]]), 6 : TensorProductOfCrystals(B,B,generators=[[B([-7,6]),B([7])]])} FiniteDimensionalHighestWeightCrystal_TypeE.__init__(self, dominant_weight)
def finite_tensor_product(self, k): """ Return the finite tensor product of crystals of length ``k`` by truncating ``self``. EXAMPLES:: sage: B = crystals.infinity.PathModel(['A',2]) sage: B.finite_tensor_product(5) Full tensor product of the crystals [The 1-elementary crystal of type ['A', 2], The 2-elementary crystal of type ['A', 2], The 1-elementary crystal of type ['A', 2], The 2-elementary crystal of type ['A', 2], The 1-elementary crystal of type ['A', 2]] """ N = len(self._factors) crystals = [self._factors[i % N] for i in range(k)] return TensorProductOfCrystals(*crystals)
def finite_tensor_product(self, k): """ Return the finite tensor product of crystals of length ``k`` from truncating ``self``. EXAMPLES:: sage: B1 = crystals.KirillovReshetikhin(['A',2,1], 1,1) sage: B2 = crystals.KirillovReshetikhin(['A',2,1], 2,1) sage: La = RootSystem(['A',2,1]).weight_lattice().fundamental_weights() sage: C = crystals.KyotoPathModel([B1,B2,B1], La[0]) sage: C.finite_tensor_product(5) Full tensor product of the crystals [Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1), Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(2,1), Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1), Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(1,1), Kirillov-Reshetikhin crystal of type ['A', 2, 1] with (r,s)=(2,1)] """ N = len(self.crystals) crystals = [self.crystals[i % N] for i in range(k)] return TensorProductOfCrystals(*crystals)
def R_matrix(self, K): r""" Return the combinatorial `R`-matrix of ``self`` to ``K``. The *combinatorial* `R`-*matrix* is the affine crystal isomorphism `R : L \otimes K \to K \otimes L` which maps `u_{L} \otimes u_K` to `u_K \otimes u_{L}`, where `u_K` is the unique element in `K = B^{r,s}` of weight `s\Lambda_r - s c \Lambda_0` (see :meth:`maximal_vector`). INPUT: - ``self`` -- a crystal `L` - ``K`` -- a Kirillov-Reshetikhin crystal of the same type as `L` EXAMPLES:: sage: K = crystals.KirillovReshetikhin(['A',2,1],1,1) sage: L = crystals.KirillovReshetikhin(['A',2,1],1,2) sage: f = K.R_matrix(L) sage: [[b,f(b)] for b in crystals.TensorProduct(K,L)] [[[[[1]], [[1, 1]]], [[[1, 1]], [[1]]]], [[[[1]], [[1, 2]]], [[[1, 1]], [[2]]]], [[[[1]], [[2, 2]]], [[[1, 2]], [[2]]]], [[[[1]], [[1, 3]]], [[[1, 1]], [[3]]]], [[[[1]], [[2, 3]]], [[[1, 2]], [[3]]]], [[[[1]], [[3, 3]]], [[[1, 3]], [[3]]]], [[[[2]], [[1, 1]]], [[[1, 2]], [[1]]]], [[[[2]], [[1, 2]]], [[[2, 2]], [[1]]]], [[[[2]], [[2, 2]]], [[[2, 2]], [[2]]]], [[[[2]], [[1, 3]]], [[[2, 3]], [[1]]]], [[[[2]], [[2, 3]]], [[[2, 2]], [[3]]]], [[[[2]], [[3, 3]]], [[[2, 3]], [[3]]]], [[[[3]], [[1, 1]]], [[[1, 3]], [[1]]]], [[[[3]], [[1, 2]]], [[[1, 3]], [[2]]]], [[[[3]], [[2, 2]]], [[[2, 3]], [[2]]]], [[[[3]], [[1, 3]]], [[[3, 3]], [[1]]]], [[[[3]], [[2, 3]]], [[[3, 3]], [[2]]]], [[[[3]], [[3, 3]]], [[[3, 3]], [[3]]]]] sage: K = crystals.KirillovReshetikhin(['D',4,1],1,1) sage: L = crystals.KirillovReshetikhin(['D',4,1],2,1) sage: f = K.R_matrix(L) sage: T = crystals.TensorProduct(K,L) sage: b = T( K(rows=[[1]]), L(rows=[]) ) sage: f(b) [[[2], [-2]], [[1]]] Alternatively, one can compute the combinatorial `R`-matrix using the isomorphism method of digraphs:: sage: K1 = crystals.KirillovReshetikhin(['A',2,1],1,1) sage: K2 = crystals.KirillovReshetikhin(['A',2,1],2,1) sage: T1 = crystals.TensorProduct(K1,K2) sage: T2 = crystals.TensorProduct(K2,K1) sage: T1.digraph().is_isomorphic(T2.digraph(), edge_labels=True, certificate=True) #todo: not implemented (see #10904 and #10549) (True, {[[[1]], [[2], [3]]]: [[[1], [3]], [[2]]], [[[3]], [[2], [3]]]: [[[2], [3]], [[3]]], [[[3]], [[1], [3]]]: [[[1], [3]], [[3]]], [[[1]], [[1], [3]]]: [[[1], [3]], [[1]]], [[[1]], [[1], [2]]]: [[[1], [2]], [[1]]], [[[2]], [[1], [2]]]: [[[1], [2]], [[2]]], [[[3]], [[1], [2]]]: [[[2], [3]], [[1]]], [[[2]], [[1], [3]]]: [[[1], [2]], [[3]]], [[[2]], [[2], [3]]]: [[[2], [3]], [[2]]]}) """ from sage.combinat.crystals.tensor_product import TensorProductOfCrystals T1 = TensorProductOfCrystals(self, K) T2 = TensorProductOfCrystals(K, self) gen1 = T1(self.maximal_vector(), K.maximal_vector()) gen2 = T2(K.maximal_vector(), self.maximal_vector()) return T1.crystal_morphism({gen1: gen2}, check=False)