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
r""" Bijection classes for type `D_4^{(3)}`.
Part of the (internal) classes which runs the bijection between rigged configurations and KR tableaux of type `D_4^{(3)}`.
AUTHORS:
- Travis Scrimshaw (2014-09-10): Initial version
TESTS::
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 3], [[2, 1]]) sage: from sage.combinat.rigged_configurations.bij_type_D_tri import KRTToRCBijectionTypeDTri sage: bijection = KRTToRCBijectionTypeDTri(KRT(pathlist=[[-1,2]])) sage: TestSuite(bijection).run() sage: RC = RiggedConfigurations(['D', 4, 3], [[2, 1]]) sage: from sage.combinat.rigged_configurations.bij_type_D_tri import RCToKRTBijectionTypeDTri sage: bijection = RCToKRTBijectionTypeDTri(RC(partition_list=[[],[]])) sage: TestSuite(bijection).run() """
#***************************************************************************** # Copyright (C) 2014 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/ #*****************************************************************************
r""" Specific implementation of the bijection from KR tableaux to rigged configurations for type `D_4^{(3)}`.
This inherits from type `A_n^{(1)}` because we use the same methods in some places. """ r""" Build the next state for type `D_4^{(3)}`.
TESTS::
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D', 4, 3], [[2,1]]) sage: from sage.combinat.rigged_configurations.bij_type_D_tri import KRTToRCBijectionTypeDTri sage: bijection = KRTToRCBijectionTypeDTri(KRT(pathlist=[[-1,2]])) sage: bijection.cur_path.insert(0, []) sage: bijection.cur_dims.insert(0, [0, 1]) sage: bijection.cur_path[0].insert(0, [2]) sage: bijection.next_state(2) """
# If it is a regular value, we follow the A_n rules
else: max_width = 1
# Follow regular A_n rules
# Make the largest string at \nu^{(1)} quasi-singular and p.vacancy_numbers[j] == p.rigging[j]:
# Always add a cell to the first singular value in the first # tableau we are updating. else:
# Add cells similar to type A_n but we move to the right else: else:
# Special case for going through 0 # If we find a quasi-singular string first, then we are in case (Q, S) # otherwise we will find a singular string and insert 2 cells P._list.append(1) P.vacancy_numbers.append(None) # Go through our partition until we find a length of greater than 1 j = len(P._list) - 1 while j >= 0 and P._list[j] == 1: j -= 1 P.rigging.insert(j + 1, None) width_n = 1 else: # Go through our partition until we find a length of greater than 2 P._list[i] += 1 width_n = P._list[i] P.rigging[i] = None else: P.rigging[j+1] = P.rigging[j] # Shuffle it along j -= 1 case_QS = True P._list[i] += 1 P.rigging[i] = None # No need to set max_width here since we will find a singular string
# Now go back following the regular C_n (ish) rules
# Special case when adding twice to the first row else: for i in reversed(range(1, len(P))): if P.rigging[i] is None: j = i - 1 while j >= 0 and P._list[j] == P._list[i]: P.rigging[j+1] = P.rigging[j] # Shuffle it along j -= 1 P._list[j+1] += 1 P.rigging[j+1] = None break else:
# Since this is on the way back, the added string we want # to bump will never be the first (largest) string P.rigging[j+1] = P.rigging[j] # Shuffle it along j -= 1 else:
# Make the new string quasi-singular num_rows = len(P) for i in range(num_rows): if P._list[i] == width_n: j = i+1 while j < num_rows and P._list[j] == width_n \ and P.vacancy_numbers[j] == P.rigging[j]: j += 1 P.rigging[j-1] -= 1 break
r""" Specific implementation of the bijection from rigged configurations to tensor products of KR tableaux for type `D_4^{(3)}`. """ r""" Build the next state for type `D_4^{(3)}`.
TESTS::
sage: RC = RiggedConfigurations(['D', 4, 3], [[2, 1]]) sage: from sage.combinat.rigged_configurations.bij_type_D_tri import RCToKRTBijectionTypeDTri sage: bijection = RCToKRTBijectionTypeDTri(RC(partition_list=[[3],[2]])) sage: bijection.next_state(2) -3 """
# Calculate the rank and ell values
else:
# Modified version of _find_singular_string() else: # Check if the block is singular
else:
else:
else:
else: # Modified form of _find_singular_string
# Determine the new rigged configuration by removing boxes from the # selected string and then making the new string singular else: self.cur_partitions[1].remove_cell(ell[4])]
else: self.cur_partitions[0].remove_cell(ell[0])] else: self.cur_partitions[0].remove_cell(ell[2])] quasi = self.cur_partitions[0].remove_cell(ell[3]) else:
# If case (Q,S) holds, then we must make the larger string quasisingular P = self.cur_partitions[0] vac_num = P.vacancy_numbers[quasi] P.rigging[quasi] = vac_num block_len = P[quasi] j = quasi + 1 length = len(P) # Find the place for the quasisingular rigging while j < length and P[j] == block_len and P.rigging[j] == vac_num: j += 1 P.rigging[j-1] = vac_num - 1
|