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

r""" 

Bijection between rigged configurations and KR tableaux 

 

Functions which are big switch statements to create the bijection class of the 

correct type. 

 

AUTHORS: 

 

- Travis Scrimshaw (2011-04-15): Initial version 

- Travis Scrimshaw (2012-12-21): Added all non-exceptional bijection types 

- Travis Scrimshaw (2014-09-10): Added type `D_4^{(3)}` 

""" 

 

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

# Copyright (C) 2011-2015 Travis Scrimshaw <tscrim@ucdavis.edu> 

# 

# Distributed under the terms of the GNU General Public License (GPL) 

# 

# This code is distributed in the hope that it will be useful, 

# but WITHOUT ANY WARRANTY; without even the implied warranty of 

# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 

# General Public License for more details. 

# 

# The full text of the GPL is available at: 

# 

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

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

 

from sage.combinat.rigged_configurations.bij_type_A import KRTToRCBijectionTypeA 

from sage.combinat.rigged_configurations.bij_type_A import RCToKRTBijectionTypeA 

 

from sage.combinat.rigged_configurations.bij_type_B import KRTToRCBijectionTypeB 

from sage.combinat.rigged_configurations.bij_type_B import RCToKRTBijectionTypeB 

 

from sage.combinat.rigged_configurations.bij_type_C import KRTToRCBijectionTypeC 

from sage.combinat.rigged_configurations.bij_type_C import RCToKRTBijectionTypeC 

 

from sage.combinat.rigged_configurations.bij_type_D import KRTToRCBijectionTypeD 

from sage.combinat.rigged_configurations.bij_type_D import RCToKRTBijectionTypeD 

 

from sage.combinat.rigged_configurations.bij_type_D_twisted import KRTToRCBijectionTypeDTwisted 

from sage.combinat.rigged_configurations.bij_type_D_twisted import RCToKRTBijectionTypeDTwisted 

 

from sage.combinat.rigged_configurations.bij_type_A2_even import KRTToRCBijectionTypeA2Even 

from sage.combinat.rigged_configurations.bij_type_A2_even import RCToKRTBijectionTypeA2Even 

 

from sage.combinat.rigged_configurations.bij_type_A2_dual import KRTToRCBijectionTypeA2Dual 

from sage.combinat.rigged_configurations.bij_type_A2_dual import RCToKRTBijectionTypeA2Dual 

 

from sage.combinat.rigged_configurations.bij_type_A2_odd import KRTToRCBijectionTypeA2Odd 

from sage.combinat.rigged_configurations.bij_type_A2_odd import RCToKRTBijectionTypeA2Odd 

 

from sage.combinat.rigged_configurations.bij_type_D_tri import KRTToRCBijectionTypeDTri 

from sage.combinat.rigged_configurations.bij_type_D_tri import RCToKRTBijectionTypeDTri 

 

from sage.combinat.rigged_configurations.bij_type_E67 import KRTToRCBijectionTypeE67 

from sage.combinat.rigged_configurations.bij_type_E67 import RCToKRTBijectionTypeE67 

 

def KRTToRCBijection(tp_krt): 

r""" 

Return the correct KR tableaux to rigged configuration bijection helper class. 

 

TESTS:: 

 

sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['A', 4, 1], [[2,1]]) 

sage: from sage.combinat.rigged_configurations.bijection import KRTToRCBijection 

sage: bijection = KRTToRCBijection(KRT(pathlist=[[5,2]])) 

""" 

ct = tp_krt.cartan_type() 

typ = ct.type() 

if ct.is_untwisted_affine(): 

if typ == 'A': 

return KRTToRCBijectionTypeA(tp_krt) 

if typ == 'B': 

return KRTToRCBijectionTypeB(tp_krt) 

if typ == 'C': 

return KRTToRCBijectionTypeC(tp_krt) 

if typ == 'D': 

return KRTToRCBijectionTypeD(tp_krt) 

if typ == 'E': 

if ct.classical().rank() < 8: 

return KRTToRCBijectionTypeE67(tp_krt) 

#if typ == 'F': 

#if typ == 'G': 

else: 

if typ == 'BC': # A_{2n}^{(2)} 

return KRTToRCBijectionTypeA2Even(tp_krt) 

typ = ct.dual().type() 

if typ == 'BC': # A_{2n}^{(2)\dagger} 

return KRTToRCBijectionTypeA2Dual(tp_krt) 

if typ == 'B': # A_{2n-1}^{(2)} 

return KRTToRCBijectionTypeA2Odd(tp_krt) 

if typ == 'C': # D_{n+1}^{(2)} 

return KRTToRCBijectionTypeDTwisted(tp_krt) 

#if typ == 'F': # E_6^{(2)} 

if typ == 'G': # D_4^{(3)} 

return KRTToRCBijectionTypeDTri(tp_krt) 

raise NotImplementedError 

 

def RCToKRTBijection(rigged_configuration_elt): 

r""" 

Return the correct rigged configuration to KR tableaux bijection helper class. 

 

TESTS:: 

 

sage: RC = RiggedConfigurations(['A', 4, 1], [[2, 1]]) 

sage: from sage.combinat.rigged_configurations.bijection import RCToKRTBijection 

sage: bijection = RCToKRTBijection(RC(partition_list=[[1],[1],[1],[1]])) 

""" 

ct = rigged_configuration_elt.cartan_type() 

typ = ct.type() 

if not ct.is_affine() or ct.is_untwisted_affine(): 

if typ == 'A': 

return RCToKRTBijectionTypeA(rigged_configuration_elt) 

if typ == 'B': 

return RCToKRTBijectionTypeB(rigged_configuration_elt) 

if typ == 'C': 

return RCToKRTBijectionTypeC(rigged_configuration_elt) 

if typ == 'D': 

return RCToKRTBijectionTypeD(rigged_configuration_elt) 

if typ == 'E': 

if ct.classical().rank() < 8: 

return RCToKRTBijectionTypeE67(rigged_configuration_elt) 

#if typ == 'F': 

#if typ == 'G': 

else: 

if typ == 'BC': # A_{2n}^{(2)} 

return RCToKRTBijectionTypeA2Even(rigged_configuration_elt) 

typ = ct.dual().type() 

if typ == 'BC': # A_{2n}^{(2)\dagger} 

return RCToKRTBijectionTypeA2Dual(rigged_configuration_elt) 

if typ == 'B': # A_{2n-1}^{(2)} 

return RCToKRTBijectionTypeA2Odd(rigged_configuration_elt) 

if typ == 'C': # D_{n+1}^{(2)} 

return RCToKRTBijectionTypeDTwisted(rigged_configuration_elt) 

#if typ == 'F': # E_6^{(2)} 

if typ == 'G': # D_4^{(3)} 

return RCToKRTBijectionTypeDTri(rigged_configuration_elt) 

raise NotImplementedError