本文整理汇总了Python中sage.combinat.root_system.cartan_type.CartanType.rank方法的典型用法代码示例。如果您正苦于以下问题:Python CartanType.rank方法的具体用法?Python CartanType.rank怎么用?Python CartanType.rank使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.combinat.root_system.cartan_type.CartanType
的用法示例。
在下文中一共展示了CartanType.rank方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __classcall_private__
# 需要导入模块: from sage.combinat.root_system.cartan_type import CartanType [as 别名]
# 或者: from sage.combinat.root_system.cartan_type.CartanType import rank [as 别名]
def __classcall_private__(cls, cartan_type, shapes = None, shape = None):
"""
Normalizes the input arguments to ensure unique representation,
and to delegate the construction of spin tableaux.
EXAMPLES::
sage: T1 = CrystalOfTableaux(CartanType(['A',3]), shape = [2,2])
sage: T2 = CrystalOfTableaux(['A',3], shape = (2,2))
sage: T3 = CrystalOfTableaux(['A',3], shapes = ([2,2],))
sage: T2 is T1, T3 is T1
(True, True)
"""
cartan_type = CartanType(cartan_type)
n = cartan_type.rank()
# standardize shape/shapes input into a tuple of tuples
assert operator.xor(shape is not None, shapes is not None)
if shape is not None:
shapes = (shape,)
spin_shapes = tuple( tuple(shape) for shape in shapes )
try:
shapes = tuple( tuple(trunc(i) for i in shape) for shape in spin_shapes )
except StandardError:
raise ValueError("shapes should all be partitions or half-integer partitions")
if spin_shapes == shapes:
return super(CrystalOfTableaux, cls).__classcall__(cls, cartan_type, shapes)
# Handle the construction of a crystals of spin tableaux
# Caveat: this currently only supports all shapes being half
# integer partitions of length the rank for type B and D. In
# particular, for type D, the spins all have to be plus or all
# minus spins
assert all(len(sh) == n for sh in shapes), \
"the length of all half-integer partition shapes should be the rank"
assert all(2*i % 2 == 1 for shape in spin_shapes for i in shape), \
"shapes should be either all partitions or all half-integer partitions"
if cartan_type.type() == 'D':
if all( i >= 0 for shape in spin_shapes for i in shape):
S = CrystalOfSpinsPlus(cartan_type)
elif all(shape[-1]<0 for shape in spin_shapes):
S = CrystalOfSpinsMinus(cartan_type)
else:
raise ValueError, "In type D spins should all be positive or negative"
else:
assert all( i >= 0 for shape in spin_shapes for i in shape), \
"shapes should all be partitions"
S = CrystalOfSpins(cartan_type)
B = CrystalOfTableaux(cartan_type, shapes = shapes)
T = TensorProductOfCrystals(S,B, generators=[[S.module_generators[0],x] for x in B.module_generators])
T.rename("The crystal of tableaux of type %s and shape(s) %s"%(cartan_type, list(list(shape) for shape in spin_shapes)))
T.shapes = spin_shapes
return T
示例2: __classcall_private__
# 需要导入模块: from sage.combinat.root_system.cartan_type import CartanType [as 别名]
# 或者: from sage.combinat.root_system.cartan_type.CartanType import rank [as 别名]
def __classcall_private__(cls, R, cartan_type):
"""
Return the correct parent based on input.
EXAMPLES::
sage: lie_algebras.ClassicalMatrix(QQ, ['A', 4])
Special linear Lie algebra of rank 5 over Rational Field
sage: lie_algebras.ClassicalMatrix(QQ, CartanType(['B',4]))
Special orthogonal Lie algebra of rank 9 over Rational Field
sage: lie_algebras.ClassicalMatrix(QQ, 'C4')
Symplectic Lie algebra of rank 8 over Rational Field
sage: lie_algebras.ClassicalMatrix(QQ, cartan_type=['D',4])
Special orthogonal Lie algebra of rank 8 over Rational Field
"""
if isinstance(cartan_type, (CartanMatrix, DynkinDiagram_class)):
cartan_type = cartan_type.cartan_type()
else:
cartan_type = CartanType(cartan_type)
if not cartan_type.is_finite():
raise ValueError("only for finite types")
if cartan_type.type() == 'A':
return sl(R, cartan_type.rank() + 1)
if cartan_type.type() == 'B':
return so(R, 2*cartan_type.rank() + 1)
if cartan_type.type() == 'C':
return sp(R, 2*cartan_type.rank())
if cartan_type.type() == 'D':
return so(R, 2*cartan_type.rank())
if cartan_type.type() == 'E':
if cartan_type.rank() == 6:
return e6(R)
if cartan_type.rank() in [7,8]:
raise NotImplementedError("not yet implemented")
if cartan_type.type() == 'F' and cartan_type.rank() == 4:
return f4(R)
if cartan_type.type() == 'G' and cartan_type.rank() == 2:
return g2(R)
raise ValueError("invalid Cartan type")
示例3: __classcall_private__
# 需要导入模块: from sage.combinat.root_system.cartan_type import CartanType [as 别名]
# 或者: from sage.combinat.root_system.cartan_type.CartanType import rank [as 别名]
def __classcall_private__(cls, *args, **kwds):
"""
Normalize input so we can inherit from spare integer matrix.
.. NOTE::
To disable the Cartan type check, use the optional argument
``cartan_type_check = False``.
EXAMPLES::
sage: C = CartanMatrix(['A',1,1])
sage: C2 = CartanMatrix([[2, -2], [-2, 2]])
sage: C3 = CartanMatrix(matrix([[2, -2], [-2, 2]]), [0, 1])
sage: C == C2 and C == C3
True
"""
# Special case with 0 args and kwds has cartan type
if "cartan_type" in kwds and len(args) == 0:
args = (CartanType(kwds["cartan_type"]),)
if len(args) == 0:
data = []
n = 0
index_set = tuple()
cartan_type = None
subdivisions = None
elif len(args) == 4 and isinstance(args[0], MatrixSpace): # For pickling
return typecall(cls, args[0], args[1], args[2], args[3])
elif isinstance(args[0], CartanMatrix):
return args[0]
else:
cartan_type = None
dynkin_diagram = None
subdivisions = None
try:
cartan_type = CartanType(args[0])
dynkin_diagram = cartan_type.dynkin_diagram()
except (TypeError, ValueError):
pass
if dynkin_diagram is not None:
n = cartan_type.rank()
index_set = dynkin_diagram.index_set()
reverse = dict((index_set[i], i) for i in range(len(index_set)))
data = {(i, i): 2 for i in range(n)}
for (i,j,l) in dynkin_diagram.edge_iterator():
data[(reverse[j], reverse[i])] = -l
else:
M = matrix(args[0])
if not is_generalized_cartan_matrix(M):
raise ValueError("The input matrix is not a generalized Cartan matrix.")
n = M.ncols()
if "cartan_type" in kwds:
cartan_type = CartanType(kwds["cartan_type"])
elif n == 1:
cartan_type = CartanType(['A', 1])
elif kwds.get("cartan_type_check", True):
cartan_type = find_cartan_type_from_matrix(M)
data = M.dict()
subdivisions = M._subdivisions
if len(args) == 1:
if cartan_type is not None:
index_set = tuple(cartan_type.index_set())
else:
index_set = tuple(range(M.ncols()))
elif len(args) == 2:
index_set = tuple(args[1])
if len(index_set) != n and len(set(index_set)) != n:
raise ValueError("The given index set is not valid.")
else:
raise ValueError("Too many arguments.")
mat = typecall(cls, MatrixSpace(ZZ, n, sparse=True), data, cartan_type, index_set)
mat._subdivisions = subdivisions
return mat
示例4: Associahedron
# 需要导入模块: from sage.combinat.root_system.cartan_type import CartanType [as 别名]
# 或者: from sage.combinat.root_system.cartan_type.CartanType import rank [as 别名]
def Associahedron(cartan_type):
r"""
Construct an associahedron.
The generalized associahedron is a polytopal complex with vertices in
one-to-one correspondence with clusters in the cluster complex, and with
edges between two vertices if and only if the associated two clusters
intersect in codimension 1.
The associahedron of type `A_n` is one way to realize the classical
associahedron as defined in the :wikipedia:`Associahedron`.
A polytopal realization of the associahedron can be found in [CFZ]_. The
implementation is based on [CFZ]_, Theorem 1.5, Remark 1.6, and Corollary
1.9.
EXAMPLES::
sage: Asso = polytopes.associahedron(['A',2]); Asso
Generalized associahedron of type ['A', 2] with 5 vertices
sage: sorted(Asso.Hrepresentation(), key=repr)
[An inequality (-1, 0) x + 1 >= 0,
An inequality (0, -1) x + 1 >= 0,
An inequality (0, 1) x + 1 >= 0,
An inequality (1, 0) x + 1 >= 0,
An inequality (1, 1) x + 1 >= 0]
sage: Asso.Vrepresentation()
(A vertex at (1, -1), A vertex at (1, 1), A vertex at (-1, 1),
A vertex at (-1, 0), A vertex at (0, -1))
sage: polytopes.associahedron(['B',2])
Generalized associahedron of type ['B', 2] with 6 vertices
The two pictures of [CFZ]_ can be recovered with::
sage: Asso = polytopes.associahedron(['A',3]); Asso
Generalized associahedron of type ['A', 3] with 14 vertices
sage: Asso.plot()
Graphics3d Object
sage: Asso = polytopes.associahedron(['B',3]); Asso
Generalized associahedron of type ['B', 3] with 20 vertices
sage: Asso.plot()
Graphics3d Object
TESTS::
sage: sorted(polytopes.associahedron(['A',3]).vertices())
[A vertex at (-3/2, 0, -1/2), A vertex at (-3/2, 0, 3/2),
A vertex at (-3/2, 1, -3/2), A vertex at (-3/2, 2, -3/2),
A vertex at (-3/2, 2, 3/2), A vertex at (-1/2, -1, -1/2),
A vertex at (-1/2, 0, -3/2), A vertex at (1/2, -2, 1/2),
A vertex at (1/2, -2, 3/2), A vertex at (3/2, -2, 1/2),
A vertex at (3/2, -2, 3/2), A vertex at (3/2, 0, -3/2),
A vertex at (3/2, 2, -3/2), A vertex at (3/2, 2, 3/2)]
sage: sorted(polytopes.associahedron(['B',3]).vertices())
[A vertex at (-3, 0, 0), A vertex at (-3, 0, 3),
A vertex at (-3, 2, -2), A vertex at (-3, 4, -3),
A vertex at (-3, 5, -3), A vertex at (-3, 5, 3),
A vertex at (-2, 1, -2), A vertex at (-2, 3, -3),
A vertex at (-1, -2, 0), A vertex at (-1, -1, -1),
A vertex at (1, -4, 1), A vertex at (1, -3, 0),
A vertex at (2, -5, 2), A vertex at (2, -5, 3),
A vertex at (3, -5, 2), A vertex at (3, -5, 3),
A vertex at (3, -3, 0), A vertex at (3, 3, -3),
A vertex at (3, 5, -3), A vertex at (3, 5, 3)]
sage: polytopes.associahedron(['A',4]).f_vector()
(1, 42, 84, 56, 14, 1)
sage: polytopes.associahedron(['B',4]).f_vector()
(1, 70, 140, 90, 20, 1)
"""
cartan_type = CartanType(cartan_type)
parent = Associahedra(QQ, cartan_type.rank())
return parent(cartan_type)