-
Notifications
You must be signed in to change notification settings - Fork 384
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - feat: Mason-Stothers theorem (polynomial ABC) #15706
Conversation
PR summary 8b3a2a85acImport changes for modified filesNo significant changes to the import graph Import changes for all files
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maintainer merge
apart from that. Thanks!
🚀 Pull request has been placed on the maintainer queue by YaelDillies. |
Co-authored-by: Yaël Dillies <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find the proof easier to read without too many have
statement. On the other hand, can you add a little bit of math explanation?
I am not delegating it immediately since I suspect there is a diamond somewhere, let me investigate this.
I pushed a small modification to another file. The lines noncomputable section
open scoped Classical can now be removed, adding /-- **Polynomial ABC theorem.** -/
theorem Polynomial.abc {a b c : k[X]} (ha : a ≠ 0) (hb : b ≠ 0) (hc : c ≠ 0) (hab : IsCoprime a b)
(hbc : IsCoprime b c) (hca : IsCoprime c a) (hsum : a + b + c = 0) :
( natDegree a + 1 ≤ (radical (a * b * c)).natDegree ∧
natDegree b + 1 ≤ (radical (a * b * c)).natDegree ∧
natDegree c + 1 ≤ (radical (a * b * c)).natDegree ) ∨
derivative a = 0 ∧ derivative b = 0 ∧ derivative c = 0 := by
-- Utility assertions
have wbc := wronskian_eq_of_sum_zero hsum
set w := wronskian a b with wab
have wca : w = wronskian c a := by
rw [add_rotate] at hsum
simpa only [← wbc] using wronskian_eq_of_sum_zero hsum
have abc_dr_dvd_w : divRadical (a * b * c) ∣ w := by
have adr_dvd_w := divRadical_dvd_wronskian_left a b
have bdr_dvd_w := divRadical_dvd_wronskian_right a b
have cdr_dvd_w := divRadical_dvd_wronskian_right b c
rw [← wab] at adr_dvd_w bdr_dvd_w
rw [← wbc] at cdr_dvd_w
rw [divRadical_mul (hca.symm.mul_left hbc), divRadical_mul hab]
exact (hca.divRadical.symm.mul_left hbc.divRadical).mul_dvd
(hab.divRadical.mul_dvd adr_dvd_w bdr_dvd_w) cdr_dvd_w
by_cases hw : w = 0
· right
rw [hw] at wab wbc
cases' hab.wronskian_eq_zero_iff.mp wab.symm with ga gb
cases' hbc.wronskian_eq_zero_iff.mp wbc.symm with _ gc
exact ⟨ga, gb, gc⟩
· left
refine ⟨?_, ?_, ?_⟩
· rw [mul_rotate] at abc_dr_dvd_w ⊢
apply abc_subcall wbc <;> assumption
· rw [← mul_rotate] at abc_dr_dvd_w ⊢
apply abc_subcall wca <;> assumption
· apply abc_subcall wab <;> assumption |
I don't get what you mean by this. Are you saying that there is a diamond (I suppose the diamond problem of instance?) in this PR, or some other part of the mathlib that this PR depends on? |
Co-authored-by: Riccardo Brasca <[email protected]>
It's in another file, but it is fixed by my commit, you can forget about it. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
bors d+
✌️ seewoo5 can now approve this pull request. To approve and merge a pull request, simply reply with |
Thank you all! bors r+ |
This file proves Mason-Stothers theorem (i.e. polynomial ABC). For coprime polynomials $a, b, c$ over a field (of arbitrary characteristic) with $a + b + c = 0$, we have $\max\{\deg(a), \deg(b), \deg(c)\} + 1 \le \deg(\mathrm{rad}(abc))$ or $a' = b' = c' = 0$. Co-authored-by: Riccardo Brasca <[email protected]> Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Seewoo Lee <[email protected]>
Pull request successfully merged into master. Build succeeded: |
This file proves Mason-Stothers theorem (i.e. polynomial ABC). For coprime polynomials $a, b, c$ over a field (of arbitrary characteristic) with $a + b + c = 0$, we have $\max\{\deg(a), \deg(b), \deg(c)\} + 1 \le \deg(\mathrm{rad}(abc))$ or $a' = b' = c' = 0$. Co-authored-by: Riccardo Brasca <[email protected]> Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Seewoo Lee <[email protected]>
Prove the polynomial FLT, using Mason-Stothers theorem #15706. More generally, prove non-solvability of Fermat-Catalan equation: $ux^p + vx^q + wz^r = 0$ where $u, v, w \in k^\times$ are units and $p, q, r \ge 3$ with $pq + qr + rp \le pqr$. Also derive the `IsCoprime b c` and `IsCoprime c a` assumptions from the `IsCoprime a b` and `a + b + c = 0` ones in `Polynomial.abc`. Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Jineon Baek <[email protected]> Co-authored-by: Seewoo Lee <[email protected]>
This file proves Mason-Stothers theorem (i.e. polynomial ABC). For coprime polynomials$a, b, c$ over a field (of arbitrary characteristic) with $a + b + c = 0$ , we have $\max{\deg(a), \deg(b), \deg(c)} + 1 \le \deg(\mathrm{rad}(abc))$ or $a' = b' = c' = 0$ .
divRadical
for polynomials #18452IsCoprime.wronskian_eq_zero_iff
#18483Almost last part of porting project of the formalization of polynomial ABC.
TODO: After #14720 is merged, add polynomial FLT as a corollary. It is already in here.
Related: #16060