p:=poly(X^3+5*X+1,Dom::Rational):
irreducible(p);
TRUE
の根の一つ
を
に追加して新しい体
を作ります。
k:=Dom::AlgebraicExtension(Dom::Rational, subs(p,X=a),a):
3
Dom::AlgebraicExtension(Dom::Rational, 5 a + a + 1 = 0, a)
今度は
のなかで
を因数分解します。
p1:=poly(p,k):
S:=factor(p1);
[1, poly(X - a, [X], Dom::AlgebraicExtension(Dom::Rational,
3 2 2
5 a + a + 1 = 0, a)), 1, poly(X + a X + (a + 5), [X],
3
Dom::AlgebraicExtension(Dom::Rational, 5 a + a + 1 = 0, a)), 1]
q:=S[4]; // S の第4成分を取り出す。
2 2
poly(X + a X + (a + 5), [X], Dom::AlgebraicExtension(Dom::Rational,
3
5 a + a + 1 = 0, a))
irreducible(q);
TRUE
最後の行でわかるように
は既約なので、
上と同様の操作で
の根
を
に付け加えて
を作ります。
L:=Dom::AlgebraicExtension(k,subs(q,X=b),b);
Dom::AlgebraicExtension(Dom::AlgebraicExtension(Dom::Rational,
3 2 2
5 a + a + 1 = 0, a), a b + a + b + 5 = 0, b)
これで
を
内で因数分解できるはずです。
p2:=poly(p,L):
factor(p2);
[1, poly(X + (a + b), [X], Dom::AlgebraicExtension(
3
Dom::AlgebraicExtension(Dom::Rational, 5 a + a + 1 = 0, a),
2 2
a b + a + b + 5 = 0, b)), 1, poly(X - a, [X], Dom::AlgebraicExtension(
3
Dom::AlgebraicExtension(Dom::Rational, 5 a + a + 1 = 0, a),
2 2
a b + a + b + 5 = 0, b)), 1, poly(X - b, [X], Dom::AlgebraicExtension(
3
Dom::AlgebraicExtension(Dom::Rational, 5 a + a + 1 = 0, a),
2 2
a b + a + b + 5 = 0, b)), 1]