龍孫江さんの動画で紹介されている命題に関する内容を、実際にプログラミングして、具体的に求めてみようという記事です。
$p$を奇素数とする。
$$
R = \mathbb{F}_p[T]/(T^2+1)
$$
とし、$R$の単元群を$R^{\times}$とする。
このとき、以下が成り立つ。
$R^{\times}$の位数は
$p \equiv 1 \pmod4$のとき$(p-1)^2$
$p \equiv 3 \pmod4$のとき$p^2-1$
具体的な奇素数$p$に対して
ということをしてみたいと思います。
既に証明されていることではありますが、せっかくなので実際にやってみて「本当だ~!」と喜んでみたいと思います。
※使用した言語のパッケージの関係上、$T$、および、動画内の$t(=T+(T^2+1))$を、計算結果では、どちらもxとしています。また、計算結果は、プログラムを実行して出力されたものをそのまま貼り付けているため、読みにくい等あると思いますが、ご了承ください。
Julia言語の便利パッケージ「
AbstractAlgebra.jl
」を使います。有限体、多項式環、剰余環が書けるので、今回のテーマにピッタリだと思います。
パソコンの中に数学の世界が入ってきて、嬉しいです(プログラミング初心者並みの感想)。
以下のように、有限体・多項式環・剰余環を書くことができます。
using AbstractAlgebra
# FpをF_5とする
Fp = GF(5)
# SをFp[x]とする
S, x = PolynomialRing(Fp, "x")
# RをFp[x]/(x^2+1)とする
R = ResidueRing(S, x^2+1)
以下のように、$S(=\mathbb{F}_p[X])$の元を書くことができます。
julia> f = S([1,1])
x + 1
julia> g = S([3,2,1])
x^2 + 2*x + 3
以下のように、上記のf,gに対応する$R$の元(剰余類)を書くことができます。
julia> R(f)
x + 1
julia> R(g)
2*x + 2
isunit関数を使うことにより、可逆元か否かを調べることができます。
julia> R(f)
x + 1
julia> isunit(R(f))
true
julia> h = S([0])
0
julia> isunit(R(h))
false
可逆元の場合、inv関数を使うことにより、乗法逆元を求めることができます。
julia> R(f)
x + 1
julia> inv(R(f))
2*x + 3
julia> R(f)*inv(R(f))
1
これらの道具を組み合わせて、プログラムを書いてみました。
位数が大きいものを載せると大変なことになりそうなので、$p=3,5,7$の場合の結果のみ記載します。
の順で記載しています。
$p=5$
1(inverse:1)
2(inverse:3)
3(inverse:2)
4(inverse:4)
x(inverse:4x)
x + 1(inverse:2x + 3)
x + 4(inverse:2x + 2)
2x(inverse:2x)
2x + 2(inverse:x + 4)
2x + 3(inverse:x + 1)
3x(inverse:3x)
3x + 2(inverse:4x + 4)
3x + 3(inverse:4x + 1)
4x(inverse:x)
4x + 1(inverse:3x + 3)
4x + 4(inverse:3x + 2)
order:16
(p-1)^2:4^2=16
$p=3$
1(inverse:1)
2(inverse:2)
x(inverse:2x)
x + 1(inverse:x + 2)
x + 2(inverse:x + 1)
2x(inverse:x)
2x + 1(inverse:2x + 2)
2x + 2(inverse:2x + 1)
order:8
p^2-1:9-1=8
$p=7$
1(inverse:1)
2(inverse:4)
3(inverse:5)
4(inverse:2)
5(inverse:3)
6(inverse:6)
x(inverse:6x)
x + 1(inverse:3x + 4)
x + 2(inverse:4x + 6)
x + 3(inverse:2x + 1)
x + 4(inverse:2x + 6)
x + 5(inverse:4x + 1)
x + 6(inverse:3x + 3)
2x(inverse:3x)
2x + 1(inverse:x + 3)
2x + 2(inverse:5x + 2)
2x + 3(inverse:2x + 4)
2x + 4(inverse:2x + 3)
2x + 5(inverse:5x + 5)
2x + 6(inverse:x + 4)
3x(inverse:2x)
3x + 1(inverse:6x + 5)
3x + 2(inverse:3x + 5)
3x + 3(inverse:x + 6)
3x + 4(inverse:x + 1)
3x + 5(inverse:3x + 2)
3x + 6(inverse:6x + 2)
4x(inverse:5x)
4x + 1(inverse:x + 5)
4x + 2(inverse:4x + 5)
4x + 3(inverse:6x + 6)
4x + 4(inverse:6x + 1)
4x + 5(inverse:4x + 2)
4x + 6(inverse:x + 2)
5x(inverse:4x)
5x + 1(inverse:6x + 3)
5x + 2(inverse:2x + 2)
5x + 3(inverse:5x + 4)
5x + 4(inverse:5x + 3)
5x + 5(inverse:2x + 5)
5x + 6(inverse:6x + 4)
6x(inverse:x)
6x + 1(inverse:4x + 4)
6x + 2(inverse:3x + 6)
6x + 3(inverse:5x + 1)
6x + 4(inverse:5x + 6)
6x + 5(inverse:3x + 1)
6x + 6(inverse:4x + 3)
order:48
p^2-1:49-1=48
次に、$R \setminus R^{\times}$の元を具体的に求めてみました。$3\leqq p \leqq 23$の場合の結果のみ記載しています。
の順で記載しています。
$p=5$
0
x + 2
x + 3
2x + 1
2x + 4
3x + 1
3x + 4
4x + 2
4x + 3
a number of elements:9
2p-1:10-1=9
$p=13$
0
x + 5
x + 8
2x + 3
2x + 10
3x + 2
3x + 11
4x + 6
4x + 7
5x + 1
5x + 12
6x + 4
6x + 9
7x + 4
7x + 9
8x + 1
8x + 12
9x + 6
9x + 7
10x + 2
10x + 11
11x + 3
11x + 10
12x + 5
12x + 8
a number of elements:25
2p-1:26-1=25
$p=17$
0
x + 4
x + 13
2x + 8
2x + 9
3x + 5
3x + 12
4x + 1
4x + 16
5x + 3
5x + 14
6x + 7
6x + 10
7x + 6
7x + 11
8x + 2
8x + 15
9x + 2
9x + 15
10x + 6
10x + 11
11x + 7
11x + 10
12x + 3
12x + 14
13x + 1
13x + 16
14x + 5
14x + 12
15x + 8
15x + 9
16x + 4
16x + 13
a number of elements:33
2p-1:34-1=33
$p=3$
0
a number of elements:1
$p=7$
0
a number of elements:1
$p=11$
0
a number of elements:1
$p=19$
0
a number of elements:1
$p=23$
0
a number of elements:1
$p \equiv 3 \pmod4$のとき、$T^2+1$は既約なので、$p \equiv 1 \pmod4$の場合のみ計算しました。$5\leqq p \leqq 41$の場合の結果のみ記載しています。
$p=5$
x^2+1=(x + 2)*(x + 3)
$p=13$
x^2+1=(x + 5)*(x + 8)
$p=17$
x^2+1=(x + 4)*(x + 13)
$p=29$
x^2+1=(x + 12)*(x + 17)
$p=37$
x^2+1=(x + 6)*(x + 31)
$p=41$
x^2+1=(x + 9)*(x + 32)
$p \equiv 1 \pmod4$の場合のみ計算しました。$5\leqq p \leqq 17$の場合の結果のみ記載しています。
の順で記載しています。
- (x + 2)
0
x + 2
2x + 4
3x + 1
4*x + 3
a number of elements:5
- (x + 5)
0
x + 5
2x + 10
3x + 2
4x + 7
5x + 12
6x + 4
7x + 9
8x + 1
9x + 6
10x + 11
11x + 3
12*x + 8
a number of elements:13
- (x + 4)
0
x + 4
2x + 8
3x + 12
4x + 16
5x + 3
6x + 7
7x + 11
8x + 15
9x + 2
10x + 6
11x + 10
12x + 14
13x + 1
14x + 5
15x + 9
16*x + 13
a number of elements:17
$p \equiv 1 \pmod4$の場合のみ計算しました。$5\leqq p \leqq 17$の場合の結果のみ記載しています。
の順で記載しています。
プログラムを書いたり、具体例を実際に眺めたりするのは、学習する上で効果的っぽいな…と思いました。そして、具体例を眺めたからこそ、「すべての奇素数$p$」を対象としている数学の良さを再認識できました。
Julia言語の代数学関連のパッケージは、他にもあるようなので(下記)、色々使って慣れていきたいと思います。
★最後に、また改めて龍孫江さんの動画URLを貼っておきます!必見ですよ~!
環論:有限環の単元群4