Weyl人物环¶
Weyl字符环¶
Weyl特征环是紧李群的表示环。它有一个由不可约表示组成的基础 G 或者相当于他们的角色。Weyl字符环中的加法和乘法对应于表示的直和和和张量积。
环境空间方法¶
在Sage中,李群的许多有用的特征可用作环境空间的方法:
sage: S = RootSystem("B2").ambient_space(); S
Ambient space of the Root system of type ['B', 2]
sage: S.roots()
[(1, -1), (1, 1), (1, 0), (0, 1), (-1, 1), (-1, -1), (-1, 0), (0, -1)]
sage: S.fundamental_weights()
Finite family {1: (1, 0), 2: (1/2, 1/2)}
sage: S.positive_roots()
[(1, -1), (1, 1), (1, 0), (0, 1)]
sage: S.weyl_group()
Weyl Group of type ['B', 2] (as a matrix group acting on the ambient space)
Weyl特征环的方法¶
如果要使用表示,可能需要创建 Weyl字符环 . 环境空间的许多方法可用作Weyl字符环的方法:
sage: B3 = WeylCharacterRing("B3")
sage: B3.fundamental_weights()
Finite family {1: (1, 0, 0), 2: (1, 1, 0), 3: (1/2, 1/2, 1/2)}
sage: B3.simple_roots()
Finite family {1: (1, -1, 0), 2: (0, 1, -1), 3: (0, 0, 1)}
sage: B3.dynkin_diagram()
O---O=>=O
1 2 3
B3
Weyl字符环的其他有用方法包括:
cartan_type
highest_root
positive_root
extended_dynkin_diagram
rank
环境空间的一些方法并没有实现为Weyl字符环的方法。但是,环境空间本身是一个方法,因此您可以从Weyl字符环访问它的方法:
sage: B3 = WeylCharacterRing("B3")
sage: B3.space().weyl_group()
Weyl Group of type ['B', 3] (as a matrix group acting on the ambient space)
sage: B3.space()
Ambient space of the Root system of type ['B', 3]
sage: B3.space().rho()
(5/2, 3/2, 1/2)
sage: B3.cartan_type()
['B', 3]
Coroot表示法¶
为Weyl字符环指定与其Cartan类型相对应的名称是很有用的。这会导致环可以解析自己的输出:
sage: G2 = WeylCharacterRing("G2")
sage: [G2(fw) for fw in G2.fundamental_weights()]
[G2(1,0,-1), G2(2,-1,-1)]
sage: G2(1,0,-1)
G2(1,0,-1)
Actually the prefix for the ring is configurable, so you don't really
have to call this ring G2
. Type WeylCharacterRing?
at the
sage:
prompt for details.
有一个重要的选择,你可能想知道。这是 coroot表示法 . 您可以通过指定选项来选择此选项 style="coroots"
当你创建环。使用coroot样式,基本权重被表示出来 (1,0,0, ...)
, (0,1,0,...)
而不是作为环境空间中的向量:
sage: B3 = WeylCharacterRing("B3", style="coroots")
sage: [B3(fw) for fw in B3.fundamental_weights()]
[B3(1,0,0), B3(0,1,0), B3(0,0,1)]
sage: B3(0,0,1)
B3(0,0,1)
sage: B3(0,0,1).degree()
8
最后一个表示是 G = spin(7) ,正交群的双覆盖 SO(7) . 在默认的表示法中,它将被表示 B3(1/2,1/2,1/2)
.
用coroot表示法表示每一个不可约表示 B3(a,b,c)
在哪里? a
, b
和 c
是非负整数。这通常很方便。在许多情况下,coroot风格更可取。
一个缺点:在coroot风格中,李群或李代数被视为半简单的,因此您失去了它们之间的区别 GL(n) 和 SL(n) ;你也有一些关于E6和E7表示的信息。
表示的张量积¶
Weyl字符环中的乘法对应于张量积。这为我们提供了一种将张量积分解为不可约的简便方法:
sage: B3 = WeylCharacterRing("B3")
sage: fw = B3.fundamental_weights()
sage: spinweight = fw[3]; spinweight
(1/2, 1/2, 1/2)
sage: spin = B3(spinweight); spin
B3(1/2,1/2,1/2)
sage: spin.degree()
8
元素 spin WeylCharacterRing的表示与第三高权重表示相对应,即 spin(7) . 我们可以很容易地用命令来构造它:
sage: spin = B3(1/2,1/2,1/2)
我们可以利用Weyl特征环的乘法结构计算它的张量积:
sage: chi = spin*spin; chi
B3(0,0,0) + B3(1,0,0) + B3(1,1,0) + B3(1,1,1)
我们取了八维自旋表象,并用它自己张量。张量分成四个不可约的平方。
此处显示的最大权重(及其系数)可通过常用的自由模块访问器获得:
sage: from pprint import pprint
sage: list(chi) # random
[((1, 1, 1), 1), ((0, 0, 0), 1), ((1, 0, 0), 1), ((1, 1, 0), 1)]
sage: sorted(chi, key=str)
[((0, 0, 0), 1), ((1, 0, 0), 1), ((1, 1, 0), 1), ((1, 1, 1), 1)]
sage: pprint(dict(chi))
{(0, 0, 0): 1, (1, 0, 0): 1, (1, 1, 0): 1, (1, 1, 1): 1}
sage: M = sorted(chi.monomials(), key=lambda x: x.support()); M
[B3(0,0,0), B3(1,0,0), B3(1,1,0), B3(1,1,1)]
sage: sorted(chi.support())
[(0, 0, 0), (1, 0, 0), (1, 1, 0), (1, 1, 1)]
sage: chi.coefficients()
[1, 1, 1, 1]
sage: [r.degree() for r in M]
[1, 7, 21, 35]
sage: sum(r.degree() for r in chi.monomials())
64
这里我们提取了各个表示,计算了它们的度数,并检查了它们的总和 64 .
权重多重性¶
通过该方法可以获得字符的权重(及其系数) weight_multiplicities
. 从上一节的示例继续:
sage: pprint(chi.weight_multiplicities())
{(0, 0, 0): 8, (-1, 0, 0): 4, (-1, -1, 0): 2, (-1, -1, -1): 1,
(-1, -1, 1): 1, (-1, 1, 0): 2, (-1, 1, -1): 1, (-1, 1, 1): 1,
(-1, 0, -1): 2, (-1, 0, 1): 2, (1, 0, 0): 4, (1, -1, 0): 2,
(1, -1, -1): 1, (1, -1, 1): 1, (1, 1, 0): 2, (1, 1, -1): 1,
(1, 1, 1): 1, (1, 0, -1): 2, (1, 0, 1): 2, (0, -1, 0): 4,
(0, -1, -1): 2, (0, -1, 1): 2, (0, 1, 0): 4, (0, 1, -1): 2,
(0, 1, 1): 2, (0, 0, -1): 4, (0, 0, 1): 4}
字典中的每个键都是一个权重,其值是该权重在字符中的重数。
例子¶
假设我们想计算积分
各种 n . 在这里 U(n) 是酉群,它是 GL(n,mathbb{{C}}) . 的不可约酉表示 U(n) 可以看作是weylcharactering的基本元素 A_r 在哪里 r=n-1 所以我们可以在那个拳击场工作。痕迹 tr(g) 就是标准表示的特征。我们可以在WeylCharacterRing中实现它,方法是取第一个基本重量,然后把它压入环中。例如,如果 k=5 和 n=3 所以 r=2 ::
sage: A2 = WeylCharacterRing("A2")
sage: fw = A2.fundamental_weights(); fw
Finite family {1: (1, 0, 0), 2: (1, 1, 0)}
sage: tr = A2(fw[1]); tr
A2(1,0,0)
我们可以计算特征的范数平方 tr^5
把它分解成不可约数,并取其重数的平方和。通过Schur正交性,这给出了 tr(g)^5 也就是说 |tr(g)|^{{10}} ::
sage: sum(d^2 for d in (tr^5).coefficients())
103
到目前为止,我们一直在 n=3 . 为将军 n ::
sage: def f(n,k):
....: R = WeylCharacterRing(['A',n-1])
....: tr = R(R.fundamental_weights()[1])
....: return sum(d^2 for d in (tr^k).coefficients())
sage: [f(n,5) for n in [2..7]]
[42, 103, 119, 120, 120, 120]
我们看到 tr(g) 只是 5! 什么时候? n 足够大。如果我们修复呢 n 变化 k 是吗?
sage: [f(2,k) for k in [1..10]]
[1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796]
sage: [catalan_number(k) for k in [1..10]]
[1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796]
弗罗贝尼乌斯舒尔指示剂¶
紧李群不可约表示的Frobeinus-Schur指示符 G 有个性的 chi 是:
将Haar度量标准化,以便 vol(G) = 1 . Frobenius Schur指标等于 1 如果表示为实(正交), -1 如果它是四元数(辛)和 0 如果它是复杂的(不是自洽的)。这是与不可约表示相对应的加权环元素的一种方法。让我们计算一些奇数自旋群的自旋表示的Frobenius-Schur指示符:
sage: def spinrepn(r):
....: R = WeylCharacterRing(['B',r])
....: return R(R.fundamental_weights()[r])
....:
sage: spinrepn(3)
B3(1/2,1/2,1/2)
sage: for r in [1..4]:
....: print("{} {}".format(r, spinrepn(r).frobenius_schur_indicator()))
1 -1
2 -1
3 1
4 1
这里我们定义了一个函数,它返回群的自旋表示 spin(2r+1) 卡坦式 ['B',r] ,然后计算几个值的Frobenius-Schur指标。从这个实验中我们看到 spin(3) 和 spin(5) 是辛的,而 spin(7) 和 spin(9) 是正交的。
对称和外部功率¶
Sage可以计算一个表示的对称和外幂:
sage: B3 = WeylCharacterRing("B3",style="coroots")
sage: spin = B3(0,0,1); spin.degree()
8
sage: spin.exterior_power(2)
B3(1,0,0) + B3(0,1,0)
sage: spin.exterior_square()
B3(1,0,0) + B3(0,1,0)
sage: spin.exterior_power(5)
B3(0,0,1) + B3(1,0,1)
sage: spin.symmetric_power(5)
B3(0,0,1) + B3(0,0,3) + B3(0,0,5)
这个 k -表示的外平方为零,如果 k 大于表示的度数。但是 k -对称幂是非零的 k .
任何表示的张量平方分解为对称和外部平方的直和:
sage: C4 = WeylCharacterRing("C4",style="coroots")
sage: chi = C4(1,0,0,0); chi.degree()
8
sage: chi.symmetric_square()
C4(2,0,0,0)
sage: chi.exterior_square()
C4(0,0,0,0) + C4(0,1,0,0)
sage: chi^2 == chi.symmetric_square() + chi.exterior_square()
True
因为在这个例子中,外部正方形包含我们期望的Frobenius Schur指示符 -1 事实上是这样的:
sage: chi = C4(1,0,0,0)
sage: chi.frobenius_schur_indicator()
-1
这并不奇怪,因为这是辛群的标准表示,辛群是辛的 根据定义 你说什么?
韦尔维公式¶
如果表示真的很大,您将无法在Weyl字符环中构造它,因为在内部它是由其权重的字典表示的。如果你想知道它的度,你仍然可以计算,因为Sage实现了Weyl维数公式。表示程度作为其最高权重向量的一种方法来实现:
sage: L = RootSystem("E8").ambient_space()
sage: [L.weyl_dimension(f) for f in L.fundamental_weights()]
[3875, 147250, 6696000, 6899079264, 146325270, 2450240, 30380, 248]
对于任何紧李群,如果 rho 是Weyl向量(正根和的一半)然后是权重最高的不可约表示的度 rho 等于 2^N 在哪里? N 是正根的数目。让我们检查一下 E_8 . 在这种情况下 N = 120 ::
sage: L = RootSystem("E8").ambient_space()
sage: len(L.positive_roots())
120
sage: 2^120
1329227995784915872903807060280344576
sage: L.weyl_dimension(L.rho())
1329227995784915872903807060280344576
SL与GL¶
Sage占了版面的权重 ['A',r]
成为 r+1 维度的。作为副产品,如果使用以下命令创建Weyl字符环:
sage: A2 = WeylCharacterRing("A2")
那么你就可以有效地 GL(3) 而不是 SL(3) . 例如,行列式是字符 A2(1,1,1)
. 但是,正如我们稍后将解释的,您可以使用 SL(3) 如果你愿意,只要你愿意与分数权重一起工作。另一方面,如果使用以下命令创建Weyl字符环:
sage: A2 = WeylCharacterRing("A2", style="coroots")
那你就和 SL(3) .
这种安排有一些优点:
集团 GL(r+1) 在实践中经常出现。例如,即使你主要关心半单群,群 GL(r+1) 可能以Levi子群的形式出现。
它避免了分数权重。如果你想和 SL(3) 基本权重是
(2/3,-1/3,-1/3)
和(1/3,1/3,-2/3)
. 如果你和 GL(3) ,他们是(1,0,0)
和(1,1,0)
. 对于许多数学目的来说,你用的没有任何区别。这是因为(2/3,-1/3,-1/3)
和(1,0,0)
是一个与所有单根正交的向量。因此这些向量是可互换的。但为了方便起见,避免分数权重是有利的。
但是如果你想成为 SL 清教徒,Sage会支持你的。重量空间 SL(3) 可以被认为是超平面 mathbf{{Q}}^3 由向量组成 (a,b,c) 具有 a+b+c = 0 . SL(3)的基本权重为 (2/3,-1/3,-1/3)
和 (1/3,1/3,-2/3)
尽管Sage会告诉你他们是 (1,0,0)
和 (1,1,0)
. 解决方法是通过方法过滤它们 coerce_to_sl
如下:
sage: A2 = WeylCharacterRing("A2")
sage: [fw1,fw2] = [w.coerce_to_sl() for w in A2.fundamental_weights()]
sage: [standard, contragredient] = [A2(fw1), A2(fw2)]
sage: standard, contragredient
(A2(2/3,-1/3,-1/3), A2(1/3,1/3,-2/3))
sage: standard*contragredient
A2(0,0,0) + A2(1,0,-1)
Sage并不被分数权重所迷惑。注意,如果使用coroot表示法,则 SL 自动::
sage: A2 = WeylCharacterRing("A2", style="coroots")
sage: A2(1,0).weight_multiplicities()
{(-1/3, -1/3, 2/3): 1, (-1/3, 2/3, -1/3): 1, (2/3, -1/3, -1/3): 1}
如果采用coroot样式,在Weyl字符环中没有创建行列式的方便方法。
就像我们把基本重量压入 SL 重量格,你可能需要强制Weyl向量 rho 如果你和 SL . 的默认值 rho 类型 A_r 是 (r,r-1,dots,0) ,但如果你是 SL 纯粹主义者想要你
因此取 rho 你从环境空间的方法中得到,并强迫它进入 SL ::
sage: A2 = WeylCharacterRing("A2", style="coroots")
sage: rho = A2.space().rho().coerce_to_sl(); rho
(1, 0, -1)
sage: rho == (1/2)*sum(A2.space().positive_roots())
True
对于其他Cartan类型,不需要执行此操作。如果你在工作(比如说) F4 然后一个 rho 是一个 rho ::
sage: F4 = WeylCharacterRing("F4")
sage: L = F4.space()
sage: rho = L.rho()
sage: rho == (1/2)*sum(L.positive_roots())
True
整合¶
假设我们想计算积分
各种 n . 在这里 U(n) 是酉群,它是 GL(n,mathbf{{C}}) 和 dg 哈尔措施开了吗 U(n) ,使组的体积为1。
的不可约酉表示 U(n) 可以看作是weylcharactering的基本元素 A_r 在哪里 r=n-1 所以我们可以在那个拳击场工作。痕迹 tr(g) 就是标准表示的特征。我们可以在WeylCharacterRing中实现它,方法是取第一个基本重量,然后把它压入环中。例如,如果 k=5 和 n=3 所以 r=2 ::
sage: A2 = WeylCharacterRing("A2")
sage: fw = A2.fundamental_weights(); fw
Finite family {1: (1, 0, 0), 2: (1, 1, 0)}
sage: tr = A2(fw[1]); tr
A2(1,0,0)
我们可以计算特征的范数平方 tr^5
把它分解成不可约数,并取其重数的平方和。通过Schur正交性,这给出了 tr(g)^5 也就是说 |tr(g)|^{{10}} ::
sage: tr^5
5*A2(2,2,1) + 6*A2(3,1,1) + 5*A2(3,2,0) + 4*A2(4,1,0) + A2(5,0,0)
sage: sorted((tr^5).monomials(), key=lambda x: x.support())
[A2(2,2,1), A2(3,1,1), A2(3,2,0), A2(4,1,0), A2(5,0,0)]
sage: sorted((tr^5).coefficients())
[1, 4, 5, 5, 6]
sage: sum(x^2 for x in (tr^5).coefficients())
103
到目前为止,我们一直在 n=3 . 为将军 n ::
sage: def f(n,k):
....: R = WeylCharacterRing(['A',n-1])
....: tr = R(R.fundamental_weights()[1])
....: return sum(x^2 for x in (tr^k).coefficients())
....:
sage: [f(n,5) for n in [2..7]] # long time (31s on sage.math, 2012)
[42, 103, 119, 120, 120, 120]
我们看到 tr(g) 只是 5! 什么时候? n 足够大。如果我们修复呢 n 变化 k 是吗?
sage: [f(2,k) for k in [1..10]]
[1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796]
sage: [catalan_number(k) for k in [1..10]]
[1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796]
不变量和重数¶
有时我们只关心某个字符中平凡表示的多重性。这可以通过方法找到 invariant_degree
. 继续前面的例子,
sage: A2 = WeylCharacterRing("A2",style="coroots")
sage: ad = A2(1,1)
sage: [ad.symmetric_power(k).invariant_degree() for k in [0..6]]
[1, 0, 1, 1, 1, 1, 2]
sage: [ad.exterior_power(k).invariant_degree() for k in [0..6]]
[1, 0, 0, 1, 0, 1, 0]
如果我们需要其他表示的多重性,我们可以用这个方法得到 multiplicity
::
sage: (ad^3).multiplicity(ad)
8
配重环¶
您可能希望直接使用表示的权重。
Weyl字符环元素在内部由其具有重数的权重字典表示。然而,这些都受到一个约束:系数必须在Weyl群的作用下保持不变。
这个 WeightRing
也是一个环,其元素在内部用重数的权重字典表示,但它不受Weyl群不变性的约束。权重可以是分数,即环境空间的元素。换言之,权环是权格周围空间上的群代数。
创建一个 WeightRing
首先构造 WeylCharacterRing
,然后创建 WeightRing
如下:
sage: A2 = WeylCharacterRing(['A',2])
sage: a2 = WeightRing(A2)
您可以强制 WeylCharacterRing
进入重量环。例如,如果要查看 GL(3) ,您可以使用该方法 mlist
,但另一种方法是强迫它进入重量环:
sage: from pprint import pprint
sage: A2 = WeylCharacterRing(['A',2])
sage: ad = A2(1,0,-1)
sage: pprint(ad.weight_multiplicities())
{(0, 0, 0): 2, (-1, 1, 0): 1, (-1, 0, 1): 1, (1, -1, 0): 1,
(1, 0, -1): 1, (0, -1, 1): 1, (0, 1, -1): 1}
此命令生成显示在表示中的权重及其重数的字典。但是另一种获得同样信息的方法,目的是利用它,强迫它进入重量环:
sage: a2 = WeightRing(A2)
sage: a2(ad)
2*a2(0,0,0) + a2(-1,1,0) + a2(-1,0,1) + a2(1,-1,0) + a2(1,0,-1) + a2(0,-1,1) + a2(0,1,-1)
例如,Weyl分母公式通常是这样写的:
符号如下。这里如果 lambda 那么,一个权重,或者更一般地说,是环境空间的一个元素 e^lambda 是指 lambda 权格环境空间的群代数中 lambda . 因为这个群代数只是一个权环,我们可以解释 e^lambda 就像它在重量环上的形象。
让我们确认Weyl分母公式 A2
::
sage: A2 = WeylCharacterRing("A2")
sage: a2 = WeightRing(A2)
sage: L = A2.space()
sage: W = L.weyl_group()
sage: rho = L.rho().coerce_to_sl()
sage: lhs = prod(a2(alpha/2)-a2(-alpha/2) for alpha in L.positive_roots()); lhs
a2(-1,1,0) - a2(-1,0,1) - a2(1,-1,0) + a2(1,0,-1) + a2(0,-1,1) - a2(0,1,-1)
sage: rhs = sum((-1)^(w.length())*a2(w.action(rho)) for w in W); rhs
a2(-1,1,0) - a2(-1,0,1) - a2(1,-1,0) + a2(1,0,-1) + a2(0,-1,1) - a2(0,1,-1)
sage: lhs == rhs
True
请注意,我们必须小心使用正确的值 rho . 原因在中解释 SL与GL .
We have seen that elements of the WeylCharacterRing
can be coerced
into the WeightRing
. Elements of the WeightRing
can be
coerced into the WeylCharacterRing
provided they are invariant
under the Weyl group.