Algorithm Search⌘K

Proofs: Kronecker's factorization method

These are the human proofs of Kronecker's factorization method, at full length.

Kronecker's method returns the factorization into irreducibles full

This proof shows: correctness, termination.

All polynomials are in Z[x]\mathbb{Z}[x]. The input f0f_0 is primitive of degree d≥1d \ge 1 with lc⁡f0>0\operatorname{lc} f_0 > 0. Write ff for the current value of the variable ff.

Fact 1 (interpolation). For distinct integers a0,…,aea_0, \ldots, a_e and values δ0,…,δe\delta_0, \ldots, \delta_e, there is exactly one polynomial g∈Q[x]g \in \mathbb{Q}[x] of degree at most ee with g(ai)=δig(a_i) = \delta_i for all ii.

Proof. Existence is the Lagrange formula. If g1g_1 and g2g_2 both qualify, g1−g2g_1 - g_2 has degree at most ee and e+1e + 1 roots, so it is zero. □\square

Fact 2. If gg divides ff and ff is primitive, then gg is primitive.

Proof. If f=ghf = g h, the content of gg divides every coefficient of ff, so it divides cont⁡(f)=1\operatorname{cont}(f) = 1. □\square

Lemma (completeness of one round). Let 1≤e1 \le e and let ff be primitive. If ff has a factor of degree ee in Z[x]\mathbb{Z}[x], the loop of line L5 finds a factor gg of ff of degree ee. Any gg it returns divides ff and has degree ee.

Proof. The second sentence is the test at line L7. For the first, let f=ghf = g h with deg⁡g=e\deg g = e. Since f(ai)≠0f(a_i) \ne 0 and f(ai)=g(ai)h(ai)f(a_i) = g(a_i) h(a_i) with integer factors, g(ai)g(a_i) is a nonzero divisor of f(ai)f(a_i). In particular g(a0)≠0g(a_0) \ne 0, and replacing g,hg, h by −g,−h-g, -h if necessary gives g(a0)>0g(a_0) > 0. So (g(a0),…,g(ae))∈D0×⋯×De(g(a_0), \ldots, g(a_e)) \in D_0 \times \cdots \times D_e. When the loop reaches this tuple, or an earlier one that passes the test, line L6 computes the unique interpolant of Fact 1, which for this tuple is gg itself, and gg passes line L7. The product is finite, so the loop reaches every tuple unless it stops earlier with a factor. □\square

Invariant. At each test of line L2:

(K1) f0=(∏g∈factorsg)⋅ff_0 = \bigl(\prod_{g \in \text{factors}} g\bigr) \cdot f, and ff is primitive with lc⁡f>0\operatorname{lc} f > 0. (K2) Each element of factors is irreducible of positive degree with a positive leading coefficient. (K3) ff has no factor of degree jj with 1≤j<e1 \le j < e.

Initialization. factors is empty, f=f0f = f_0 and e=1e = 1. (K1) and (K2) are clear, and (K3) is empty.

Maintenance, a factor is found. Line L8 appends gg, normalized so that lc⁡g>0\operatorname{lc} g > 0, and replaces ff by q=f/gq = f / g. Then f0=(∏factors)⋅g⋅qf_0 = (\prod \text{factors}) \cdot g \cdot q, the leading coefficient of qq is positive, and qq is primitive by Fact 2 since q∣fq \mid f. So (K1) holds. The factor gg has degree e≥1e \ge 1. If g=uvg = u v with 1≤deg⁡u<e1 \le \deg u < e, then uu would be a factor of ff of degree less than ee, contradicting (K3). So gg is irreducible, and (K2) holds. Every factor of qq is a factor of ff, so (K3) holds for qq with the same ee.

Maintenance, no factor is found. By the lemma ff has no factor of degree ee. Together with (K3) it has no factor of degree jj for 1≤j<e+11 \le j < e + 1, which is (K3) after line L9.

Termination. Each pass either increases ee by one or lowers deg⁡f\deg f by e≥1e \ge 1, and both e≤deg⁡f/2≤d/2e \le \deg f / 2 \le d/2 and deg⁡f≥0\deg f \ge 0 are bounded. So the number of passes is at most d/2+dd/2 + d. Each pass runs over a finite product of finite divisor sets, since f(ai)≠0f(a_i) \ne 0.

Correctness at exit. At exit 2e>deg⁡f2e > \deg f. If deg⁡f≥1\deg f \ge 1, suppose f=uvf = u v with 1≤deg⁡u≤deg⁡v1 \le \deg u \le \deg v. Then deg⁡u≤deg⁡f/2<e\deg u \le \deg f / 2 < e, which contradicts (K3). So ff is irreducible, and line L10 appends it. It is primitive with positive leading coefficient by (K1). If deg⁡f=0\deg f = 0, then ff is a positive primitive constant, so f=1f = 1. In both cases (K1) and (K2) show that the returned list consists of irreducible polynomials of positive degree with positive leading coefficients whose product is f0f_0. ■\blacksquare

Back to Kronecker's factorization method