def __classcall_private__(cls, ct, c=1, t=None, base_ring=None, prefix=('a', 's', 'ac')): """ Normalize input to ensure a unique representation. EXAMPLES:: sage: R1 = algebras.RationalCherednik(['B',2], 1, 1, QQ) sage: R2 = algebras.RationalCherednik(CartanType(['B',2]), [1,1], 1, QQ, ('a', 's', 'ac')) sage: R1 is R2 True """ ct = CartanType(ct) if not ct.is_finite(): raise ValueError("the Cartan type must be finite") if base_ring is None: if t is None: base_ring = QQ else: base_ring = t.parent() if t is None: t = base_ring.one() else: t = base_ring(t) # Normalize the parameter c if isinstance(c, (tuple, list)): if ct.is_simply_laced(): if len(c) != 1: raise ValueError( "1 parameter c_s must be given for simply-laced types") c = (base_ring(c[0]), ) else: if len(c) != 2: raise ValueError( "2 parameters c_s must be given for non-simply-laced types" ) c = (base_ring(c[0]), base_ring(c[1])) else: c = base_ring(c) if ct.is_simply_laced(): c = (c, ) else: c = (c, c) return super(RationalCherednikAlgebra, cls).__classcall__(cls, ct, c, t, base_ring, tuple(prefix))
def __classcall_private__(cls, cartan_type, wt=None): r""" Normalize the input arguments to ensure unique representation. EXAMPLES:: sage: La = RootSystem(['A', 2]).weight_lattice().fundamental_weights() sage: RC = crystals.RiggedConfigurations(La[1]) sage: RC2 = crystals.RiggedConfigurations(['A', 2], La[1]) sage: RC is RC2 True """ if wt is None: wt = cartan_type cartan_type = wt.parent().cartan_type() else: cartan_type = CartanType(cartan_type) wt_lattice = cartan_type.root_system().weight_lattice() wt = wt_lattice(wt) if not cartan_type.is_simply_laced(): vct = cartan_type.as_folding() return CrystalOfNonSimplyLacedRC(vct, wt) return super(CrystalOfRiggedConfigurations, cls).__classcall__(cls, wt)
def __classcall_private__(cls, ct, c=1, t=None, base_ring=None, prefix=('a', 's', 'ac')): """ Normalize input to ensure a unique representation. EXAMPLES:: sage: R1 = algebras.RationalCherednik(['B',2], 1, 1, QQ) sage: R2 = algebras.RationalCherednik(CartanType(['B',2]), [1,1], 1, QQ, ('a', 's', 'ac')) sage: R1 is R2 True """ ct = CartanType(ct) if not ct.is_finite(): raise ValueError("the Cartan type must be finite") if base_ring is None: if t is None: base_ring = QQ else: base_ring = t.parent() if t is None: t = base_ring.one() else: t = base_ring(t) # Normalize the parameter c if isinstance(c, (tuple, list)): if ct.is_simply_laced(): if len(c) != 1: raise ValueError("1 parameter c_s must be given for simply-laced types") c = (base_ring(c[0]),) else: if len(c) != 2: raise ValueError("2 parameters c_s must be given for non-simply-laced types") c = (base_ring(c[0]), base_ring(c[1])) else: c = base_ring(c) if ct.is_simply_laced(): c = (c,) else: c = (c, c) return super(RationalCherednikAlgebra, cls).__classcall__(cls, ct, c, t, base_ring, tuple(prefix))
def __classcall_private__(cls, cartan_type): r""" Normalize the input arguments to ensure unique representation. EXAMPLES:: sage: RC1 = crystals.infinity.RiggedConfigurations(CartanType(['A',3])) sage: RC2 = crystals.infinity.RiggedConfigurations(['A',3]) sage: RC2 is RC1 True """ cartan_type = CartanType(cartan_type) if not cartan_type.is_simply_laced(): vct = cartan_type.as_folding() return InfinityCrystalOfNonSimplyLacedRC(vct) return super(InfinityCrystalOfRiggedConfigurations, cls).__classcall__(cls, cartan_type)
def __classcall_private__(cls, cartan_type): r""" Normalize the input arguments to ensure unique representation. EXAMPLES:: sage: RC1 = crystals.infinity.RiggedConfigurations(CartanType(['A',3])) sage: RC2 = crystals.infinity.RiggedConfigurations(['A',3]) sage: RC2 is RC1 True """ cartan_type = CartanType(cartan_type) if not cartan_type.is_simply_laced(): vct = cartan_type.as_folding() return InfinityCrystalOfNonSimplyLacedRC(vct) return super(InfinityCrystalOfRiggedConfigurations, cls).__classcall__(cls, cartan_type)