def _call_(self, x): r""" Return the image of ``x`` in the rigged configuration model of `B(\infty)`. EXAMPLES:: sage: RC = crystals.infinity.RiggedConfigurations(['A',3]) sage: T = crystals.infinity.Tableaux(['A',3]) sage: phi = RC.coerce_map_from(T) sage: x = T.an_element().f_string([2,2,1,1,3,2,1,2,1,3]) sage: y = phi(x); ascii_art(y) -4[ ][ ][ ][ ]-2 -3[ ][ ][ ]-1 -1[ ][ ]-1 -2[ ]-1 sage: (~phi)(y) == x True """ conj = x.to_tableau().conjugate() ct = self.domain().cartan_type() act = ct.affine() TP = TensorProductOfKirillovReshetikhinTableaux(act, [[r,1] for r in conj.shape()]) elt = TP(pathlist=[reversed(row) for row in conj]) if ct.type() == 'A': bij = KRTToRCBijectionTypeA(elt) elif ct.type() == 'B': bij = MLTToRCBijectionTypeB(elt) elif ct.type() == 'C': bij = KRTToRCBijectionTypeC(elt) elif ct.type() == 'D': bij = MLTToRCBijectionTypeD(elt) else: raise NotImplementedError("bijection of type {} not yet implemented".format(ct)) return self.codomain()(bij.run())
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