有限群,アーベル群 ============================= Sageでは,置換群,有限古典群(例えば :math:`SU(n,q)`),有限行列群(生成元を指定して生成),そしてアーベル群(無限次も可)などの演算が可能である. これらの機能の大半は,GAPとのインターフェイスを経由して実現されている. まず,例として置換群を生成してみよう. それには,以下のようにして生成元のリストを指定してやればよい. :: sage: G = PermutationGroup(['(1,2,3)(4,5)', '(3,4)']) sage: G Permutation Group with generators [(3,4), (1,2,3)(4,5)] sage: G.order() 120 sage: G.is_abelian() False sage: G.derived_series() # 結果は変化しがち [Subgroup of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) generated by [(3,4), (1,2,3)(4,5)], Subgroup of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) generated by [(1,5,3), (1,5)(3,4), (1,5)(2,4)]] sage: G.center() Subgroup of (Permutation Group with generators [(3,4), (1,2,3)(4,5)]) generated by [()] sage: G.random_element() # random 出力は変化する (1,5,3)(2,4) sage: print(latex(G)) \langle (3,4), (1,2,3)(4,5) \rangle Sageを使えば(LaTeX形式で)指標表を作ることもできる: :: sage: G = PermutationGroup([[(1,2),(3,4)], [(1,2,3)]]) sage: latex(G.character_table()) \left(\begin{array}{rrrr} 1 & 1 & 1 & 1 \\ 1 & -\zeta_{3} - 1 & \zeta_{3} & 1 \\ 1 & \zeta_{3} & -\zeta_{3} - 1 & 1 \\ 3 & 0 & 0 & -1 \end{array}\right) Sageは有限体上の古典群と行列群も扱うことができる: :: sage: MS = MatrixSpace(GF(7), 2) sage: gens = [MS([[1,0],[-1,1]]),MS([[1,1],[0,1]])] sage: G = MatrixGroup(gens) sage: G.conjugacy_classes_representatives() ( [1 0] [0 6] [0 4] [6 0] [0 6] [0 4] [0 6] [0 6] [0 6] [4 0] [0 1], [1 5], [5 5], [0 6], [1 2], [5 2], [1 0], [1 4], [1 3], [0 2], [5 0] [0 3] ) sage: G = Sp(4,GF(7)) sage: G Symplectic Group of degree 4 over Finite Field of size 7 sage: G.random_element() # random 元をランダムに出力 [5 5 5 1] [0 2 6 3] [5 0 1 0] [4 6 3 4] sage: G.order() 276595200 (無限次および有限次の)アーベル群を使う演算も可能だ: :: sage: F = AbelianGroup(5, [5,5,7,8,9], names='abcde') sage: (a, b, c, d, e) = F.gens() sage: d * b**2 * c**3 b^2*c^3*d sage: F = AbelianGroup(3,[2]*3); F Multiplicative Abelian group isomorphic to C2 x C2 x C2 sage: H = AbelianGroup([2,3], names="xy"); H Multiplicative Abelian group isomorphic to C2 x C3 sage: AbelianGroup(5) Multiplicative Abelian group isomorphic to Z x Z x Z x Z x Z sage: AbelianGroup(5).order() +Infinity