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

[Merged by Bors] - feat(100-theorems-list/16_abel_ruffini): The Abel-Ruffini Theorem #7562

Closed
wants to merge 100 commits into from

Conversation

tb65536
Copy link
Collaborator

@tb65536 tb65536 commented May 10, 2021

tb65536 and others added 2 commits May 17, 2021 18:17
Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
tb65536 and others added 2 commits May 17, 2021 18:26
Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
@benjamindavidson
Copy link
Collaborator

I put together the following restructure of real_roots_Phi_ge_aux to minimize the amount of work you have to do in its proof (this also involved making a slight alteration to the statement and proof of real_roots_Phi_ge_aux'):

lemma real_roots_Phi_ge_aux' (hab : b < a) : (a : ℝ) ^ 2 - a ^ 5 + b ≤ 0 :=
begin
  rw_mod_cast [sub_add_eq_add_sub, sub_nonpos],
  refine ((nat.add_le_add_iff_le_right 1 _ _).mp _).trans (nat.pow_le_pow_of_le_right
    (nat.one_le_of_lt hab) (bit1_le_bit1.mpr one_le_two)),
  rw add_assoc,
  apply (add_le_add (le_refl (a ^ 2)) (nat.succ_le_iff.mpr hab)).trans,
  suffices : ∀ c : ℤ, 0 ≤ c → c ^ 2 + c ≤ c ^ 3 + 1,
  { exact_mod_cast this a (int.coe_nat_nonneg a) },
  intros c hc,
  rw [←sub_nonneg, show c ^ 3 + 1 - (c ^ 2 + c) = (c - 1) ^ 2 * (c + 1), by ring],
  exact mul_nonneg (pow_two_nonneg _) (add_nonneg hc zero_le_one),
end

lemma real_roots_Phi_ge_aux (hab : b < a) :
  ∃ x y : ℝ, x ≠ y ∧ aeval x (Φ ℚ a b) = 0 ∧ aeval y (Φ ℚ a b) = 0 :=
begin
  let f := λ x : ℝ, aeval x (Φ ℚ a b),
  have hf : f = λ x, x ^ 5 - a * x + b, { simp [f, Φ] },
  have hc : ∀ s : set ℝ, continuous_on f s := λ s, (Φ ℚ a b).continuous_on_aeval,
  have ha : (1 : ℝ) ≤ a := nat.one_le_cast.mpr (nat.one_le_of_lt hab),
  have hle : (0 : ℝ) ≤ 1, { exact_mod_cast zero_le_one' },
  have hf0 : 0 ≤ f 0, { norm_num [hf] },
  by_cases hb : (1 : ℝ) - a + b < 0,
  { have hf1 : f 1 < 0, { norm_num [hf, hb] },
    have hfa : 0 ≤ f a,
    { simp_rw [hf, ← sq],
      refine add_nonneg (sub_nonneg.mpr (pow_le_pow ha _)) _; norm_num },
    obtain ⟨x, ⟨-, hx1⟩, hx2⟩ := intermediate_value_Ico' hle (hc _) (set.mem_Ioc.mpr ⟨hf1, hf0⟩),
    obtain ⟨y, ⟨hy1, -⟩, hy2⟩ := intermediate_value_Ioc ha (hc _) (set.mem_Ioc.mpr ⟨hf1, hfa⟩),
    exact ⟨x, y, (hx1.trans hy1).ne, hx2, hy2⟩ },
  { have hb' : (1 : ℝ) - a + b = 0,
    { refine le_antisymm _ (not_lt.mp hb),
      rw [sub_add_eq_add_sub, sub_nonpos, add_comm],
      exact_mod_cast nat.succ_le_iff.mpr hab },
    have hf1 : f 1 = 0, { norm_num [hf, hb'] },
    have hfa : f (-a) ≤ 0, { norm_num [hf, ← sq, real_roots_Phi_ge_aux' a b hab] },
    have ha' := neg_nonpos.mpr (hle.trans ha),
    obtain ⟨x, ⟨-, hx1⟩, hx2⟩ := intermediate_value_Icc ha' (hc _) (set.mem_Icc.mpr ⟨hfa, hf0⟩),
    exact ⟨x, 1, (hx1.trans_lt zero_lt_one).ne, hx2, hf1⟩ },
end

archive/100-theorems-list/16_abel_ruffini.lean Outdated Show resolved Hide resolved
archive/100-theorems-list/16_abel_ruffini.lean Outdated Show resolved Hide resolved
archive/100-theorems-list/16_abel_ruffini.lean Outdated Show resolved Hide resolved
archive/100-theorems-list/16_abel_ruffini.lean Outdated Show resolved Hide resolved
tb65536 and others added 7 commits May 18, 2021 11:10
Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
@tb65536
Copy link
Collaborator Author

tb65536 commented May 18, 2021

@benjamindavidson Thanks! I managed to further golf the new version of real_roots_Phi_ge_aux'.

Co-authored-by: Benjamin Davidson <68528197+benjamindavidson@users.noreply.github.com>
Copy link
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 🎉

bors merge

@github-actions github-actions bot added ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.) and removed awaiting-review The author would like community review of the PR labels May 22, 2021
bors bot pushed a commit that referenced this pull request May 22, 2021
)

It's done!



Co-authored-by: tb65536 <tb65536@users.noreply.github.com>
@bors
Copy link

bors bot commented May 22, 2021

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(100-theorems-list/16_abel_ruffini): The Abel-Ruffini Theorem [Merged by Bors] - feat(100-theorems-list/16_abel_ruffini): The Abel-Ruffini Theorem May 22, 2021
@bors bors bot closed this May 22, 2021
@bors bors bot deleted the polySn branch May 22, 2021 15:47
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
ready-to-merge All that is left is for bors to build and merge this PR. (Remember you need to say `bors r+`.)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants