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 `C_n^{(1)}`.
Part of the (internal) classes which runs the bijection between rigged configurations and KR tableaux of type `C_n^{(1)}`.
AUTHORS:
- Travis Scrimshaw (2012-12-21): Initial version
TESTS::
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['C', 3, 1], [[2,1]]) sage: from sage.combinat.rigged_configurations.bij_type_C import KRTToRCBijectionTypeC sage: bijection = KRTToRCBijectionTypeC(KRT(pathlist=[[-1,2]])) sage: TestSuite(bijection).run() sage: RC = RiggedConfigurations(['C', 3, 1], [[2, 1]]) sage: from sage.combinat.rigged_configurations.bij_type_C import RCToKRTBijectionTypeC sage: bijection = RCToKRTBijectionTypeC(RC(partition_list=[[],[],[]])) sage: TestSuite(bijection).run() """
#***************************************************************************** # Copyright (C) 2012 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 `C_n^{(1)}`.
This inherits from type `A_n^{(1)}` because we use the same methods in some places. """
r""" Build the next state for type `C_n^{(1)}`.
TESTS::
sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['C', 3, 1], [[2,1]]) sage: from sage.combinat.rigged_configurations.bij_type_C import KRTToRCBijectionTypeC sage: bijection = KRTToRCBijectionTypeC(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) """ # Note that we must subtract 1 from n to match the indices.
# If it is a regular value, we follow the A_n rules
# Always add a cell to the first singular value in the first # tableau we are updating. else:
# Special case for inserting -n
# Add cells similar to type A_n but we move to the right until we # reach the value of n
# Special case for n
# Now go back following the special C_n rules else:
# Update the final rigged partitions
self._update_vacancy_nums(pos_val - 2) self._update_partition_values(pos_val - 2)
""" Insert a cell when case `(S)` holds.
TESTS::
sage: RC = RiggedConfigurations(['C', 2, 1], [[2, 2]]) sage: RP = RC(partition_list=[[2],[2,2]])[1] sage: RP -4[ ][ ]-4 -4[ ][ ]-4 <BLANKLINE> sage: RP.rigging[0] = None sage: from sage.combinat.rigged_configurations.bij_type_C import KRTToRCBijectionTypeC sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['C', 3, 1], [[2,1]]) sage: bijection = KRTToRCBijectionTypeC(KRT(pathlist=[[-1,2]])) sage: bijection._insert_cell_case_S(RP) sage: RP -4[ ][ ][ ]None -4[ ][ ]-4 <BLANKLINE> """ # Special case when adding twice to the first row
partition.rigging[j+1] = partition.rigging[j] # Shuffle it along j -= 1
r""" Specific implementation of the bijection from rigged configurations to tensor products of KR tableaux for type `C_n^{(1)}`. """
r""" Build the next state for type `C_n^{(1)}`.
TESTS::
sage: RC = RiggedConfigurations(['C', 3, 1], [[2, 1]]) sage: from sage.combinat.rigged_configurations.bij_type_C import RCToKRTBijectionTypeC sage: bijection = RCToKRTBijectionTypeC(RC(partition_list=[[2],[2],[1]])) sage: bijection.next_state(1) -1 """
# Calculate the rank and ell values
else:
# Special case for n # Since we are dividing by 2, we can use the identity of # ceiling = floor + remainder (last_size // 2) + (last_size % 2))
else:
# Now go back else: # note last_size > 1
else:
# Determine the new rigged configuration by removing boxes from the # selected string and then making the new string singular else: else:
self.cur_partitions[n-2].rigging[row_num_bar] = self.cur_partitions[n-2].vacancy_numbers[row_num_bar]
|