Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

""" 

Benkart-Kang-Kashiwara crystals for the general-linear Lie superalgebra 

""" 

 

#***************************************************************************** 

# Copyright (C) 2017 Franco Saliola <saliola@gmail.com> 

# 2017 Travis Scrimshaw <tcscrims at gmail.com> 

# 2017 Anne Schilling <anne@math.ucdavis.edu> 

# 

# This program is free software: you can redistribute it and/or modify 

# it under the terms of the GNU General Public License as published by 

# the Free Software Foundation, either version 2 of the License, or 

# (at your option) any later version. 

# http://www.gnu.org/licenses/ 

#***************************************************************************** 

 

from sage.misc.cachefunc import cached_method 

from sage.misc.lazy_attribute import lazy_attribute 

from sage.structure.parent import Parent 

from sage.structure.unique_representation import UniqueRepresentation 

 

from sage.categories.regular_supercrystals import RegularSuperCrystals 

from sage.combinat.partition import _Partitions 

from sage.combinat.root_system.cartan_type import CartanType 

from sage.combinat.crystals.letters import CrystalOfBKKLetters 

from sage.combinat.crystals.tensor_product import CrystalOfWords 

from sage.combinat.crystals.tensor_product_element import CrystalOfBKKTableauxElement 

 

 

class CrystalOfBKKTableaux(CrystalOfWords): 

r""" 

Crystal of tableaux for type `A(m|n)`. 

 

This is an implementation of the tableaux model of the 

Benkart-Kang-Kashiwara crystal [BKK2000]_ for the Lie 

superalgebra `\mathfrak{gl}(m+1,n+1)`. 

 

INPUT: 

 

- ``ct`` -- a super Lie Cartan type of type `A(m|n)` 

- ``shape`` -- shape specifying the highest weight; this should be 

a partition contained in a hook of height `n+1` and width `m+1` 

 

EXAMPLES:: 

 

sage: T = crystals.Tableaux(['A', [1,1]], shape = [2,1]) 

sage: T.cardinality() 

20 

""" 

@staticmethod 

def __classcall_private__(cls, ct, shape): 

""" 

Normalize input to ensure a unique representation. 

 

TESTS:: 

 

sage: crystals.Tableaux(['A', [1, 2]], shape=[2,1]) 

Crystal of BKK tableaux of shape [2, 1] of gl(2|3) 

sage: crystals.Tableaux(['A', [1, 1]], shape=[3,3,3]) 

Traceback (most recent call last): 

... 

ValueError: invalid hook shape 

""" 

ct = CartanType(ct) 

shape = _Partitions(shape) 

if len(shape) > ct.m + 1 and shape[ct.m+1] > ct.n + 1: 

raise ValueError("invalid hook shape") 

return super(CrystalOfBKKTableaux, cls).__classcall__(cls, ct, shape) 

 

def __init__(self, ct, shape): 

r""" 

Initialize ``self``. 

 

TESTS:: 

 

sage: T = crystals.Tableaux(['A', [1,1]], shape = [2,1]); T 

Crystal of BKK tableaux of shape [2, 1] of gl(2|2) 

sage: TestSuite(T).run() 

""" 

self._shape = shape 

self._cartan_type = ct 

m = ct.m + 1 

n = ct.n + 1 

C = CrystalOfBKKLetters(ct) 

tr = shape.conjugate() 

mg = [] 

for i,col_len in enumerate(tr): 

for j in range(col_len - m): 

mg.append(C(i+1)) 

for j in range(max(0, m - col_len), m): 

mg.append(C(-j-1)) 

mg = list(reversed(mg)) 

Parent.__init__(self, category=RegularSuperCrystals()) 

self.module_generators = (self.element_class(self, mg),) 

 

def _repr_(self): 

""" 

Return a string representation of ``self``. 

 

TESTS:: 

 

sage: crystals.Tableaux(['A', [1, 2]], shape=[2,1]) 

Crystal of BKK tableaux of shape [2, 1] of gl(2|3) 

""" 

m = self._cartan_type.m + 1 

n = self._cartan_type.n + 1 

return "Crystal of BKK tableaux of shape {} of gl({}|{})".format(self.shape(), m, n) 

 

def shape(self): 

r""" 

Return the shape of ``self``. 

 

EXAMPLES:: 

 

sage: T = crystals.Tableaux(['A', [1, 2]], shape=[2,1]) 

sage: T.shape() 

[2, 1] 

""" 

return self._shape 

 

def genuine_highest_weight_vectors(self, index_set=None): 

""" 

Return a tuple of genuine highest weight elements. 

 

A *fake highest weight vector* is one which is annihilated by 

`e_i` for all `i` in the index set, but whose weight is not 

bigger in dominance order than all other elements in the 

crystal. A *genuine highest weight vector* is a highest 

weight element that is not fake. 

 

EXAMPLES:: 

 

sage: B = crystals.Tableaux(['A', [1,1]], shape=[3,2,1]) 

sage: B.genuine_highest_weight_vectors() 

([[-2, -2, -2], [-1, -1], [1]],) 

sage: B.highest_weight_vectors() 

([[-2, -2, -2], [-1, 2], [1]], 

[[-2, -2, -2], [-1, -1], [1]], 

[[-2, -2, 2], [-1, -1], [1]]) 

""" 

if index_set is None or index_set == self.index_set(): 

return self.module_generators 

return super(CrystalOfBKKTableaux, self).genuine_highest_weight_vectors(index_set) 

 

class Element(CrystalOfBKKTableauxElement): 

pass