Skip to content

An evaluation image proves irreducibility where the substitution cannot reach (#746) - #1087

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
feat/evaluation-irreducibility
Aug 26, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
feat/evaluation-irreducibility

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

MathS.Polynomials.Factor in several variables is Kronecker's substitution, whose one-variable
image has degree Π (d_i + 1) - 1 — a product. That leaves the one-variable factoriser's
reach after very few variables: x2 + y2 + z2 + w2 + 1 needs an image of degree 80 against a
ceiling of 32, and the answer was null.

before now
Factor("x2 + y2 + z2 + w2 + 1", "x") null w ^ 2 + x ^ 2 + y ^ 2 + z ^ 2 + 1
Factor("x2 + y2 + z2 + 1", "x") x ^ 2 + y ^ 2 + z ^ 2 + 1 unchanged
Factor("x7 - y7", "x") null null — it is reducible; this says nothing about it
Factor("(x + y) * (x - y)", "x") (x + y) * (x - y) unchanged
Factor("y * (x + 1)", "x") y * (x + 1) unchanged

Measured on a build of each side.

Why an evaluation image settles anything

Evaluating is a ring homomorphism, so f = g·h gives f(x, a) = g(x, a)·h(x, a). Degrees in
the main variable add, so if the image kept the total degree then neither part can have lost
any. An image that is irreducible and of full degree is therefore a proof that its source is
irreducible — and since #1059, "it does not factor" is an answer rather than a refusal.

An evaluation image has degree d_main however many other variables there are, which is exactly
why it reaches where the substitution does not.

What it does not claim, and how that is held down

One direction only. A reducible image says nothing at all — x2 + y is irreducible and its
image at y = -4 is (x-2)(x+2) — so several points are tried and a decline is never a claim
of reducibility.

The true half is the one nothing downstream can check: a factorisation is verified by
division, and "there is no factorisation" is not. So the tests are mostly about the half that
must never be wrong — 17 of the 23 assert that a certificate is not issued, and every case
in them is written as a product, or is a difference of like powers, so it is reducible by
construction whatever a factoriser would say about it.

The count in the positive test is what stops all of that passing vacuously: a certificate that
always declined would satisfy every AssertFalse in the file. The two halves hold each other up,
and the test remark says so.

The content precondition is checked, not assumed. A factor free of the main variable is
invisible to an image in that variable, so y · (x + 1) would be certified on an image of
2x + 2 whose primitive part is x + 1. The content in the main variable is computed and
anything but a constant declines.

Where this sits

Asked second, after the substitution refuses — the substitution is the one that can actually
factor, and this only ever says there is nothing to find.

It is the first step of Hensel lifting with an evaluation homomorphism — choosing a point
whose image keeps the degree — used for the one conclusion that needs no lifting. Lifting a
reducible image back to a factorisation of its source is the rest of that algorithm, is
unchanged here, and remains the outstanding piece of #746 tier 1.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Bjumi5K7fg8yx6UK1mZTQd

…ot reach

`Factor` in several variables is Kronecker's substitution, and its one-variable image has
degree `Π (d_i + 1) - 1` -- a product, so it leaves the one-variable factoriser's reach
after very few variables. `x2 + y2 + z2 + w2 + 1` needs an image of degree 80 against a
ceiling of 32, and the answer was `null`.

Evaluating instead of substituting gives an image of degree `d_main`, whatever the
variable count. That image cannot be lifted back to a factorisation without Hensel
lifting, which is still outstanding -- but it does not need to be for one conclusion.
Substitution is a ring homomorphism, so `f = g*h` gives `f(x,a) = g(x,a)*h(x,a)`; degrees
in the main variable add, so if the image kept the total then neither part lost any. **An
irreducible image of full degree is therefore a proof that its source is irreducible**,
and since #1059 that is an answer rather than a refusal.

One direction only, and the tests are mostly about the direction it does not claim. A
reducible image says nothing at all -- `x2 + y` is irreducible and its image at y = -4 is
`(x-2)(x+2)` -- so several points are tried and `x7 - y7` is still refused. A factor free
of the main variable is invisible to an image in that variable, so the content is computed
and anything but a constant declines, or `y * (x + 1)` would be certified on an image of
`2x + 2`.

The `true` half is the one nothing downstream can check: a factorisation is verified by
division and "there is no factorisation" is not. So seventeen of the twenty-three tests
assert that a certificate is *not* issued, and every case in them is written as a product
or is a difference of like powers -- reducible by construction, whatever a factoriser
would say. The count in the positive test is what stops all of that passing vacuously: a
certificate that always declined would satisfy every one of them.

Asked second, after the substitution refuses, because the substitution is the one that can
actually factor and this only ever says that there is nothing to find.

This is the first step of Hensel lifting with an evaluation homomorphism -- choosing a
point whose image keeps the degree -- used for the conclusion that needs no lifting. The
lifting itself is unchanged and still outstanding on #746 tier 1.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bjumi5K7fg8yx6UK1mZTQd
@Rafael-SOWNet
Rafael-SOWNet merged commit 9ff1773 into master Aug 26, 2026
31 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the feat/evaluation-irreducibility branch August 26, 2026 21:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant