韦尔人物戒指

Weyl特征标环

Weyl特征标环是紧李群的表示环。它有一个由下列不可约表示组成的基 G ,或者等同地,它们的特征。Weyl特征标环中的加法和乘法对应于表示的直和和张量积。

环境空间的方法

在Sage中,Lie群的许多有用的特征可以作为环境空间的方法使用:

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 Character ring 。环境空间的许多方法可以作为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]

科鲁特记数法

为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)

实际上,环的前缀是可配置的,因此您不必真的将此环称为环 G2 。类型 WeylCharacterRing?sage: 提示输入详细信息。

您可能想知道一个重要的选项。这是 coroot notation 。可以通过指定选项来选择此选项 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)

每一个不可约的表示都用cooot表示法表示 B3(a,b,c) 哪里 abc 是非负整数。这通常是很方便的。出于许多目的,考鲁特风格是更可取的。

一个缺点是:在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: tuple(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}

该词典的每个键都是一个权重,其值是该权重在字符中的重数。

示例

假设我们想要计算积分

\[\int_{U(N)}|tr(G)|^{2k}\,dg\]

对于不同的 n 。这里 U(n) 是酉群,它是的极大紧子群 GL(n,mathbb{C}) 。的不可约么正表示 U(n) 可视为类型的WeylCharacterRing的基本元素 A_r ,在哪里 r=n-1 所以我们可能会在那个圈子里工作。痕迹 tr(g) 也就是标准表示法的特征。我们可以在WeylCharacterRing中实现这一点,方法是取第一个基本权重并将其强迫到环中。例如,如果 k=5n=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]

我们看到的第10个时刻 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]

Frobenius-Schur指标

紧李群的不可约表示的Frobeinus-Schur指示符 G 有个性的 chi 是:

\[\int_G\chi(g^2)\,dg\]

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) 具有Cartan型 ['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

这并不奇怪,因为这是辛群的标准表示,辛群是辛群 by definition 好了!

韦尔量纲公式

如果表示真的很大,您将不能在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 你想要的纯粹主义者

\[\left(\frac{r}{2}, \frac{r}{2}-1,\dots,-\frac{r}{2}\right).\]

因此,取…的价值 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

整合

假设我们想要计算积分

\[\int_{U(N)}|tr(G)|^{2k}\,dg\]

对于不同的 n 。这里 U(n) 是酉群,它是的极大紧子群 GL(n,mathbf{C}) ,以及 dg 哈尔措施开始了吗 U(n) ,以使组的音量为1。

的不可约么正表示 U(n) 可视为类型的WeylCharacterRing的基本元素 A_r ,在哪里 r=n-1 所以我们可能会在那个圈子里工作。痕迹 tr(g) 也就是标准表示法的特征。我们可以在WeylCharacterRing中实现这一点,方法是取第一个基本权重并将其强迫到环中。例如,如果 k=5n=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: tuple(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]

我们看到的第10个时刻 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)

例如,韦尔分母公式通常是这样写的:

\[\prod_{\alpha\in\Phi^+}\left(e^{\alpha/2}-e^{-\alpha/2}\right) = \sum_{w\in W} (-1)^{l(w)}e^{w(\rho)}.\]

The notation is as follows. Here if lambda is a weight, or more generally, an element of the ambient space, then e^lambda means the image of lambda in the group algebra of the ambient space of the weight lattice lambda. Since this group algebra is just the weight ring, we can interpret e^lambda as its image in the weight ring.

让我们确认一下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.