Skip to content

Commit e80f8a2

Browse files
feat(polynomial): close bounded real-root limits
1 parent 1214e58 commit e80f8a2

5 files changed

Lines changed: 60 additions & 5 deletions

File tree

RealRooted.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,7 @@ import RealRooted.Mathlib.Algebra.Polynomial.Splits.Complex
587587
import RealRooted.Mathlib.Algebra.Polynomial.Splits.Derivative
588588
import RealRooted.Mathlib.Analysis.Complex.OpenMapping
589589
import RealRooted.Mathlib.Analysis.Complex.Polynomial.ClosedRoots
590+
import RealRooted.Mathlib.Analysis.Complex.Polynomial.ClosedRoots.Real
590591
import RealRooted.Mathlib.Analysis.Normed.Field.Approximation
591592
import RealRooted.Mathlib.Analysis.Polynomial.Asymptotics
592593
import RealRooted.Mathlib.Analysis.Polynomial.MahlerMeasure

RealRooted/Mathlib/Analysis/Complex/Polynomial/ClosedRoots.lean

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
import Mathlib.Algebra.Order.BigOperators.GroupWithZero.Multiset
2-
import Mathlib.Algebra.Polynomial.Splits
3-
import Mathlib.Analysis.Complex.Polynomial.Basic
1+
module
2+
3+
public import Mathlib.Algebra.Order.BigOperators.GroupWithZero.Multiset
4+
public import Mathlib.Algebra.Polynomial.Splits
5+
public import Mathlib.Analysis.Complex.Polynomial.Basic
6+
7+
public section
48

59
/-!
610
# Closed conditions on roots of polynomial limits
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
module
2+
3+
public import RealRooted.Mathlib.Algebra.Polynomial.Splits.Complex
4+
public import RealRooted.Mathlib.Analysis.Complex.Polynomial.ClosedRoots
5+
6+
public section
7+
8+
noncomputable section
9+
10+
open Filter Topology
11+
12+
namespace Polynomial
13+
14+
/-- Pointwise limits of real splitting polynomials with uniformly bounded
15+
degree are zero or split. -/
16+
theorem eq_zero_or_splits_of_tendsto_eval_of_natDegree_le
17+
{p : ℕ → ℝ[X]} {p₀ : ℝ[X]} {N : ℕ}
18+
(hdeg : ∀ n, (p n).natDegree ≤ N)
19+
(hsplit : ∀ n, p n = 0 ∨ (p n).Splits)
20+
(heval : ∀ z : ℂ, Tendsto
21+
(fun n => ((p n).map Complex.ofRealHom).eval z) atTop
22+
(𝓝 ((p₀.map Complex.ofRealHom).eval z))) :
23+
p₀ = 0 ∨ p₀.Splits := by
24+
by_cases hp₀ : p₀ = 0
25+
· exact Or.inl hp₀
26+
right
27+
apply splits_of_all_roots_real
28+
intro z hz
29+
have hzroots : z ∈ (p₀.map Complex.ofRealHom).roots :=
30+
(mem_roots (Polynomial.map_ne_zero hp₀)).mpr hz
31+
have hreal : z ∈ {z : ℂ | z.im = 0} :=
32+
roots_mem_of_tendsto_eval_of_natDegree_le
33+
(isClosed_eq Complex.continuous_im continuous_const)
34+
(fun n => by
35+
simpa only [natDegree_map_eq_of_injective Complex.ofRealHom.injective] using hdeg n)
36+
(fun n r hr => by
37+
rcases hsplit n with hpzero | hpsplits
38+
· rw [hpzero] at hr
39+
simp at hr
40+
· rw [hpsplits.roots_map Complex.ofRealHom, Multiset.mem_map] at hr
41+
obtain ⟨s, -, rfl⟩ := hr
42+
simp)
43+
heval z hzroots
44+
exact hreal
45+
46+
end Polynomial

RealRooted/Production.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -587,6 +587,7 @@ import RealRooted.Mathlib.Algebra.Polynomial.Splits.Complex
587587
import RealRooted.Mathlib.Algebra.Polynomial.Splits.Derivative
588588
import RealRooted.Mathlib.Analysis.Complex.OpenMapping
589589
import RealRooted.Mathlib.Analysis.Complex.Polynomial.ClosedRoots
590+
import RealRooted.Mathlib.Analysis.Complex.Polynomial.ClosedRoots.Real
590591
import RealRooted.Mathlib.Analysis.Normed.Field.Approximation
591592
import RealRooted.Mathlib.Analysis.Polynomial.Asymptotics
592593
import RealRooted.Mathlib.RingTheory.PowerSeries.CatalanQuadratic

scripts/import_architecture.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
},
1111
"budgets": {
1212
"RealRooted": {
13-
"max_modules": 1177
13+
"max_modules": 1178
1414
},
1515
"RealRooted.Production": {
16-
"max_modules": 1056
16+
"max_modules": 1057
1717
},
1818
"RealRooted.Tactic.Examples": {
1919
"max_modules": 633
@@ -402,6 +402,9 @@
402402
"RealRooted.Mathlib.Algebra.Polynomial.Splits.Complex": {
403403
"max_modules": 1
404404
},
405+
"RealRooted.Mathlib.Analysis.Complex.Polynomial.ClosedRoots.Real": {
406+
"max_modules": 3
407+
},
405408
"RealRooted.HermiteBiehler.Basic": {
406409
"max_modules": 13
407410
},

0 commit comments

Comments
 (0)