Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit c8edd60

Browse files
committed
chore(data/polynomial/ring_division): golf a few proofs (#14097)
* add `polynomial.finite_set_of_is_root`; * use it to golf a few proofs.
1 parent 6cf6e8c commit c8edd60

File tree

2 files changed

+11
-19
lines changed

2 files changed

+11
-19
lines changed

src/analysis/special_functions/polynomials.lean

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,8 @@ namespace polynomial
2727

2828
variables {𝕜 : Type*} [normed_linear_ordered_field 𝕜] (P Q : 𝕜[X])
2929

30-
lemma eventually_no_roots (hP : P ≠ 0) : ∀ᶠ x in filter.at_top, ¬ P.is_root x :=
31-
begin
32-
obtain ⟨x₀, hx₀⟩ := exists_max_root P hP,
33-
refine filter.eventually_at_top.mpr (⟨x₀ + 1, λ x hx h, _⟩),
34-
exact absurd (hx₀ x h) (not_le.mpr (lt_of_lt_of_le (lt_add_one x₀) hx)),
35-
end
30+
lemma eventually_no_roots (hP : P ≠ 0) : ∀ᶠ x in at_top, ¬ P.is_root x :=
31+
at_top_le_cofinite $ (finite_set_of_is_root hP).compl_mem_cofinite
3632

3733
variables [order_topology 𝕜]
3834

src/data/polynomial/ring_division.lean

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -373,26 +373,22 @@ theorem card_le_degree_of_subset_roots {p : R[X]} {Z : finset R} (h : Z.val ⊆
373373
Z.card ≤ p.nat_degree :=
374374
(multiset.card_le_of_le (finset.val_le_iff_val_subset.2 h)).trans (polynomial.card_roots' p)
375375

376-
lemma eq_zero_of_infinite_is_root
377-
(p : R[X]) (h : set.infinite {x | is_root p x}) : p = 0 :=
378-
begin
379-
by_contradiction hp,
380-
apply h,
381-
convert p.roots.to_finset.finite_to_set using 1,
382-
ext1 r,
383-
simp only [mem_roots hp, multiset.mem_to_finset, set.mem_set_of_eq, finset.mem_coe]
384-
end
376+
lemma finite_set_of_is_root {p : R[X]} (hp : p ≠ 0) : set.finite {x | is_root p x} :=
377+
by simpa only [← finset.set_of_mem, mem_to_finset, mem_roots hp]
378+
using p.roots.to_finset.finite_to_set
379+
380+
lemma eq_zero_of_infinite_is_root (p : R[X]) (h : set.infinite {x | is_root p x}) : p = 0 :=
381+
not_imp_comm.mp finite_set_of_is_root h
385382

386383
lemma exists_max_root [linear_order R] (p : R[X]) (hp : p ≠ 0) :
387384
∃ x₀, ∀ x, p.is_root x → x ≤ x₀ :=
388-
set.exists_upper_bound_image _ _ $ not_not.mp (mt (eq_zero_of_infinite_is_root p) hp)
385+
set.exists_upper_bound_image _ _ $ finite_set_of_is_root hp
389386

390387
lemma exists_min_root [linear_order R] (p : R[X]) (hp : p ≠ 0) :
391388
∃ x₀, ∀ x, p.is_root x → x₀ ≤ x :=
392-
set.exists_lower_bound_image _ _ $ not_not.mp (mt (eq_zero_of_infinite_is_root p) hp)
389+
set.exists_lower_bound_image _ _ $ finite_set_of_is_root hp
393390

394-
lemma eq_of_infinite_eval_eq {R : Type*} [comm_ring R] [is_domain R]
395-
(p q : R[X]) (h : set.infinite {x | eval x p = eval x q}) : p = q :=
391+
lemma eq_of_infinite_eval_eq (p q : R[X]) (h : set.infinite {x | eval x p = eval x q}) : p = q :=
396392
begin
397393
rw [← sub_eq_zero],
398394
apply eq_zero_of_infinite_is_root,

0 commit comments

Comments
 (0)