表象理论¶
普通字符¶
在Sage中如何计算有限群的字符表?Sage-GAP接口可用于计算字符表。
可以构造置换组的字符值表 \(G\) 作为Sage矩阵,使用 character_table
或者通过pexpect接口到GAP命令 CharacterTable
.
sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3,4)]])
sage: G.order()
8
sage: G.character_table()
[ 1 1 1 1 1]
[ 1 -1 -1 1 1]
[ 1 -1 1 -1 1]
[ 1 1 -1 -1 1]
[ 2 0 0 0 -2]
sage: CT = gap(G).CharacterTable()
sage: print(gap.eval("Display(%s)"%CT.name()))
CT1
<BLANKLINE>
2 3 2 2 2 3
<BLANKLINE>
1a 2a 2b 4a 2c
2P 1a 1a 1a 2c 1a
3P 1a 2a 2b 4a 2c
<BLANKLINE>
X.1 1 1 1 1 1
X.2 1 -1 -1 1 1
X.3 1 -1 1 -1 1
X.4 1 1 -1 -1 1
X.5 2 . . . -2
下面是另一个例子:
sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3)]])
sage: G.character_table()
[ 1 1 1 1]
[ 1 -zeta3 - 1 zeta3 1]
[ 1 zeta3 -zeta3 - 1 1]
[ 3 0 0 -1]
sage: gap.eval("G := Group((1,2)(3,4),(1,2,3))")
'Group([ (1,2)(3,4), (1,2,3) ])'
sage: gap.eval("T := CharacterTable(G)")
'CharacterTable( Alt( [ 1 .. 4 ] ) )'
sage: print(gap.eval("Display(T)"))
CT2
<BLANKLINE>
2 2 . . 2
3 1 1 1 .
<BLANKLINE>
1a 3a 3b 2a
2P 1a 3b 3a 1a
3P 1a 1a 1a 2a
<BLANKLINE>
X.1 1 1 1 1
X.2 1 A /A 1
X.3 1 /A A 1
X.4 3 . . -1
<BLANKLINE>
A = E(3)^2
= (-1-Sqrt(-3))/2 = -1-b3
在哪里? \(E(3)\) 表示单位的立方根, \(ER(-3)\) 表示的平方根 \(-3\) 说 \(i\sqrt{{3}}\) 和 \(b3 = \frac{{1}}{{2}}(-1+i \sqrt{{3}})\) . 注意 print
Python命令。这使得输出看起来更好。
sage: print(gap.eval("irr := Irr(G)"))
[ Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, 1, 1 ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, E(3)^2, E(3), 1 ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, E(3), E(3)^2, 1 ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 3, 0, 0, -1 ] ) ]
sage: print(gap.eval("Display(irr)"))
[ [ 1, 1, 1, 1 ],
[ 1, E(3)^2, E(3), 1 ],
[ 1, E(3), E(3)^2, 1 ],
[ 3, 0, 0, -1 ] ]
sage: gap.eval("CG := ConjugacyClasses(G)")
'[ ()^G, (2,3,4)^G, (2,4,3)^G, (1,2)(3,4)^G ]'
sage: gap.eval("gamma := CG[3]")
'(2,4,3)^G'
sage: gap.eval("g := Representative(gamma)")
'(2,4,3)'
sage: gap.eval("chi := irr[2]")
'Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, E(3)^2, E(3), 1 ] )'
sage: gap.eval("g^chi")
'E(3)'
最后一个数量是字符的值 chi
组中的元素 g
.
或者,如果您关闭IPython的“pretty printing”,那么表就会很好地打印出来。
sage: %Pprint
Pretty printing has been turned OFF
sage: gap.eval("G := Group((1,2)(3,4),(1,2,3))")
'Group([ (1,2)(3,4), (1,2,3) ])'
sage: gap.eval("T := CharacterTable(G)")
'CharacterTable( Alt( [ 1 .. 4 ] ) )'
sage: gap.eval("Display(T)")
CT3
<BLANKLINE>
2 2 2 . .
3 1 . 1 1
<BLANKLINE>
1a 2a 3a 3b
2P 1a 1a 3b 3a
3P 1a 2a 1a 1a
<BLANKLINE>
X.1 1 1 1 1
X.2 1 1 A /A
X.3 1 1 /A A
X.4 3 -1 . .
<BLANKLINE>
A = E(3)^2
= (-1-Sqrt(-3))/2 = -1-b3
sage: gap.eval("irr := Irr(G)")
[ Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, 1, 1 ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, E(3)^2, E(3) ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 1, 1, E(3), E(3)^2 ] ),
Character( CharacterTable( Alt( [ 1 .. 4 ] ) ), [ 3, -1, 0, 0 ] ) ]
sage: gap.eval("Display(irr)")
[ [ 1, 1, 1, 1 ],
[ 1, 1, E(3)^2, E(3) ],
[ 1, 1, E(3), E(3)^2 ],
[ 3, -1, 0, 0 ] ]
sage: %Pprint
Pretty printing has been turned ON
布劳尔字符¶
GAP中的Brauer字符表还没有“本机”接口。要访问它们,可以使用pexpect和 gap.eval
命令。
下面使用GAP接口的示例说明了语法。
sage: print(gap.eval("G := Group((1,2)(3,4),(1,2,3))"))
Group([ (1,2)(3,4), (1,2,3) ])
sage: print(gap.eval("irr := IrreducibleRepresentations(G,GF(7))")) # random arch. dependent output
[ [ (1,2)(3,4), (1,2,3) ] -> [ [ [ Z(7)^0 ] ], [ [ Z(7)^4 ] ] ],
[ (1,2)(3,4), (1,2,3) ] -> [ [ [ Z(7)^0 ] ], [ [ Z(7)^2 ] ] ],
[ (1,2)(3,4), (1,2,3) ] -> [ [ [ Z(7)^0 ] ], [ [ Z(7)^0 ] ] ],
[ (1,2)(3,4), (1,2,3) ] ->
[ [ [ Z(7)^2, Z(7)^5, Z(7) ], [ Z(7)^3, Z(7)^2, Z(7)^3 ],
[ Z(7), Z(7)^5, Z(7)^2 ] ],
[ [ 0*Z(7), Z(7)^0, 0*Z(7) ], [ 0*Z(7), 0*Z(7), Z(7)^0 ],
[ Z(7)^0, 0*Z(7), 0*Z(7) ] ] ] ]
sage: gap.eval("brvals := List(irr,chi->List(ConjugacyClasses(G),c->BrauerCharacterValue(Image(chi,Representative(c)))))")
''
sage: print(gap.eval("Display(brvals)")) # random architecture dependent output
[ [ 1, 1, E(3)^2, E(3) ],
[ 1, 1, E(3), E(3)^2 ],
[ 1, 1, 1, 1 ],
[ 3, -1, 0, 0 ] ]
sage: print(gap.eval("T := CharacterTable(G)"))
CharacterTable( Alt( [ 1 .. 4 ] ) )
sage: print(gap.eval("Display(T)"))
CT3
<BLANKLINE>
2 2 . . 2
3 1 1 1 .
<BLANKLINE>
1a 3a 3b 2a
2P 1a 3b 3a 1a
3P 1a 1a 1a 2a
<BLANKLINE>
X.1 1 1 1 1
X.2 1 A /A 1
X.3 1 /A A 1
X.4 3 . . -1
<BLANKLINE>
A = E(3)^2
= (-1-Sqrt(-3))/2 = -1-b3