Skip to content
This repository has been archived by the owner on Jan 30, 2023. It is now read-only.

Commit

Permalink
Fixed epsilon/phi for type A2 dual.
Browse files Browse the repository at this point in the history
  • Loading branch information
Travis Scrimshaw committed Aug 7, 2014
1 parent 9e5c99f commit 73daade
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

from sage.misc.cachefunc import cached_method
from sage.structure.list_clone import ClonableArray
from sage.rings.integer import Integer
from sage.combinat.rigged_configurations.rigged_partition import RiggedPartition, \
RiggedPartitionTypeB

Expand Down Expand Up @@ -778,7 +779,14 @@ def epsilon(self, a):
EXAMPLES::
sage: RC = RiggedConfigurations(['D', 4, 1], [[2, 2]])
sage: La = RootSystem(['B',2]).weight_lattice().fundamental_weights()
sage: RC = crystals.RiggedConfigurations(La[1]+La[2])
sage: I = RC.index_set()
sage: matrix([[rc.epsilon(i) for i in I] for rc in RC[:4]])
[0 0]
[1 0]
[0 1]
[0 2]
"""
a = self.parent()._rc_index.index(a)
if not self[a]:
Expand All @@ -795,7 +803,14 @@ def phi(self, a):
EXAMPLES::
sage: RC = RiggedConfigurations(['D', 4, 1], [[2, 2]])
sage: La = RootSystem(['B',2]).weight_lattice().fundamental_weights()
sage: RC = crystals.RiggedConfigurations(La[1]+La[2])
sage: I = RC.index_set()
sage: matrix([[rc.phi(i) for i in I] for rc in RC[:4]])
[1 1]
[0 3]
[0 2]
[1 1]
"""
a = self.parent()._rc_index.index(a)
p_inf = self.parent()._calc_vacancy_number(self, a, None)
Expand Down Expand Up @@ -1357,10 +1372,6 @@ def epsilon(self, a):
r"""
Return `\varepsilon_a` of ``self``.
Let `x_{\ell}` be the smallest string of `\nu^{(a)}` or `0` if
`\nu^{(a)} = \emptyset`, then we have
`\varepsilon_a = -\min(0, x_{\ell})`.
EXAMPLES::
sage: RC = RiggedConfigurations(['D', 4, 1], [[2, 2]])
Expand All @@ -1372,20 +1383,12 @@ def epsilon(self, a):
"""
if a == self.parent()._cartan_type.special_node():
return self.to_tensor_product_of_kirillov_reshetikhin_tableaux().epsilon(a)

a = self.parent()._rc_index.index(a)
if not self[a]:
return 0
return -min(0, min(self[a].rigging))
return RiggedConfigurationElement.epsilon(self, a)

def phi(self, a):
r"""
Return `\varphi_a` of ``self``.
Let `x_{\ell}` be the smallest string of `\nu^{(a)}` or `0` if
`\nu^{(a)} = \emptyset`, then we have
`\varepsilon_a = p_{\infty}^{(a)} - min(0, x_{\ell})`.
EXAMPLES::
sage: RC = RiggedConfigurations(['D', 4, 1], [[2, 2]])
Expand All @@ -1397,12 +1400,7 @@ def phi(self, a):
"""
if a == self.parent()._cartan_type.special_node():
return self.to_tensor_product_of_kirillov_reshetikhin_tableaux().phi(a)

a = self.parent()._rc_index.index(a)
p_inf = self.parent()._calc_vacancy_number(self, a, None)
if not self[a]:
return p_inf
return p_inf - min(0, min(self[a].rigging))
return RiggedConfigurationElement.phi(self, a)

def weight(self):
"""
Expand Down Expand Up @@ -2088,3 +2086,66 @@ def cocharge(self):

cc = cocharge

class KRRCTypeA2DualElement(KRRCNonSimplyLacedElement):
r"""
`U_q^{\prime}(\mathfrak{g})` rigged configurations in type
`A_{2n}^{(2)\dagger}`.
"""
def epsilon(self, a):
r"""
Return the value of `\varepsilon_a` of ``self``.
Here we need to modify the usual definition by
`\varepsilon_n^{\prime} := 2 \varepsilon_n`.
EXAMPLES::
sage: RC = RiggedConfigurations(CartanType(['A',4,2]).dual(), [[1,1], [2,2]])
sage: def epsilon(x, i):
....: x = x.e(i)
....: eps = 0
....: while x is not None:
....: x = x.e(i)
....: eps = eps + 1
....: return eps
sage: all(epsilon(rc, 2) == rc.epsilon(2) for rc in RC)
True
"""
if a == self.parent()._cartan_type.special_node():
return self.to_tensor_product_of_kirillov_reshetikhin_tableaux().epsilon(a)

epsilon = Integer(KRRCNonSimplyLacedElement.epsilon(self, a))
n = self.parent().cartan_type().classical().rank()
if self.parent()._rc_index.index(a) == n-1: # -1 for indexing
return 2 * epsilon
return epsilon

def phi(self, a):
r"""
Return the value of `\varphi_a` of ``self``.
Here we need to modify the usual definition by
`\varphi_n^{\prime} := 2 \varphi_n`.
EXAMPLES::
sage: RC = RiggedConfigurations(CartanType(['A',4,2]).dual(), [[1,1], [2,2]])
sage: def phi(x, i):
....: x = x.f(i)
....: ph = 0
....: while x is not None:
....: x = x.f(i)
....: ph = ph + 1
....: return ph
sage: all(phi(rc, 2) == rc.phi(2) for rc in RC)
True
"""
if a == self.parent()._cartan_type.special_node():
return self.to_tensor_product_of_kirillov_reshetikhin_tableaux().phi(a)

phi = Integer(KRRCNonSimplyLacedElement.phi(self, a))
n = self.parent().cartan_type().classical().rank()
if self.parent()._rc_index.index(a) == n-1: # -1 for indexing
return 2 * phi
return phi

Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@
from sage.combinat.cartesian_product import CartesianProduct
from sage.combinat.rigged_configurations.kleber_tree import KleberTree, VirtualKleberTree
from sage.combinat.rigged_configurations.rigged_configuration_element import (
RiggedConfigurationElement, KRRCSimplyLacedElement, KRRCNonSimplyLacedElement)
RiggedConfigurationElement, KRRCSimplyLacedElement, KRRCNonSimplyLacedElement,
KRRCTypeA2DualElement)

RiggedConfigurationOptions=GlobalOptions(name='rigged configurations',
doc=r"""
Expand Down Expand Up @@ -1871,6 +1872,8 @@ def from_virtual(self, vrc):
return self.element_class(self, partition_list=partitions,
rigging_list=riggings, vacancy_numbers_list=vac_nums)

Element = KRRCTypeA2DualElement

def HighestWeightRiggedConfigurations(cartan_type, B):
"""
Deprecated in :trac:`13872`. Use instead the attribute
Expand Down

0 comments on commit 73daade

Please sign in to comment.