Repository navigation
An evaluation image proves irreducibility where the substitution cannot reach (#746) - #1087
Merged
Merged
Conversation
…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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
MathS.Polynomials.Factorin several variables is Kronecker's substitution, whose one-variableimage has degree
Π (d_i + 1) - 1— a product. That leaves the one-variable factoriser'sreach after very few variables:
x2 + y2 + z2 + w2 + 1needs an image of degree 80 against aceiling of 32, and the answer was
null.Factor("x2 + y2 + z2 + w2 + 1", "x")nullw ^ 2 + x ^ 2 + y ^ 2 + z ^ 2 + 1Factor("x2 + y2 + z2 + 1", "x")x ^ 2 + y ^ 2 + z ^ 2 + 1Factor("x7 - y7", "x")nullnull— it is reducible; this says nothing about itFactor("(x + y) * (x - y)", "x")(x + y) * (x - y)Factor("y * (x + 1)", "x")y * (x + 1)Measured on a build of each side.
Why an evaluation image settles anything
Evaluating is a ring homomorphism, so
f = g·hgivesf(x, a) = g(x, a)·h(x, a). Degrees inthe 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_mainhowever many other variables there are, which is exactlywhy 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 + yis irreducible and itsimage at
y = -4is(x-2)(x+2)— so several points are tried and a decline is never a claimof reducibility.
The
truehalf is the one nothing downstream can check: a factorisation is verified bydivision, 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
AssertFalsein 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 of2x + 2whose primitive part isx + 1. The content in the main variable is computed andanything 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