|
1 | 1 | /-
|
2 |
| -Copyright (c) 2024 Jineon Back and Seewoo Lee. All rights reserved. |
| 2 | +Copyright (c) 2024 Jineon Baek and Seewoo Lee. All rights reserved. |
3 | 3 | Released under Apache 2.0 license as described in the file LICENSE.
|
4 | 4 | Authors: Jineon Baek, Seewoo Lee
|
5 | 5 | -/
|
6 | 6 | import Mathlib.Algebra.Polynomial.AlgebraMap
|
7 | 7 | import Mathlib.Algebra.Polynomial.Derivative
|
8 | 8 | import Mathlib.LinearAlgebra.SesquilinearForm
|
| 9 | +import Mathlib.RingTheory.Coprime.Basic |
9 | 10 |
|
10 | 11 | /-!
|
11 | 12 | # Wronskian of a pair of polynomial
|
@@ -113,4 +114,34 @@ theorem natDegree_wronskian_lt_add {a b : R[X]} (hw : wronskian a b ≠ 0) :
|
113 | 114 | · exact Polynomial.degree_eq_natDegree ha
|
114 | 115 | · exact Polynomial.degree_eq_natDegree hb
|
115 | 116 |
|
| 117 | +variable {k : Type*} [Field k] |
| 118 | + |
| 119 | +@[simp] |
| 120 | +theorem dvd_derivative_iff {a : k[X]} : a ∣ derivative a ↔ derivative a = 0 where |
| 121 | + mp h := by |
| 122 | + by_cases a_nz : a = 0 |
| 123 | + · simp only [a_nz, derivative_zero] |
| 124 | + exact eq_zero_of_dvd_of_degree_lt h (degree_derivative_lt a_nz) |
| 125 | + mpr h := by simp [h] |
| 126 | + |
| 127 | +/-- |
| 128 | +For coprime polynomials `a` and `b`, their Wronskian is zero |
| 129 | +if and only if their derivatives are zeros. |
| 130 | +-/ |
| 131 | +theorem IsCoprime.wronskian_eq_zero_iff {a b : k[X]} (hc : IsCoprime a b) : |
| 132 | + wronskian a b = 0 ↔ derivative a = 0 ∧ derivative b = 0 where |
| 133 | + mp hw := by |
| 134 | + rw [wronskian, sub_eq_iff_eq_add, zero_add] at hw |
| 135 | + constructor |
| 136 | + · rw [← dvd_derivative_iff] |
| 137 | + apply hc.dvd_of_dvd_mul_right |
| 138 | + rw [← hw]; exact dvd_mul_right _ _ |
| 139 | + · rw [← dvd_derivative_iff] |
| 140 | + apply hc.symm.dvd_of_dvd_mul_left |
| 141 | + rw [hw]; exact dvd_mul_left _ _ |
| 142 | + mpr hdab := by |
| 143 | + cases' hdab with hda hdb |
| 144 | + rw [wronskian] |
| 145 | + rw [hda, hdb]; simp only [MulZeroClass.mul_zero, MulZeroClass.zero_mul, sub_self] |
| 146 | + |
116 | 147 | end Polynomial
|
0 commit comments