/-
Copyright 2025 The Formal Conjectures Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-/
import FormalConjecturesUtilConjectures about the Mandelbrot and Multibrot sets
This file adds three conjectures about the Mandelbrot and Multibrot sets:
the
the
the conjecture that the boundaries of these sets have zero area. The first two conjectures are related in that the former implies the latter.
open Topology Set Function Filter Bornology Metric MeasureTheory
namespace Mandelbrot
The Multibrot set of power n is the set of all parameters c : ℂ for which 0 does not
escape to infinity under repeated application of z ↦ z ^ n + c.
def multibrotSet (n : ℕ) : Set ℂ :=
{c | ¬ Tendsto (fun k ↦ (fun z ↦ z ^ n + c)^[k] 0) atTop (cobounded ℂ)}
The Mandelbrot set is the special case of the multibrot set for n = 2. In other words, it is the
set of all parameters c : ℂ for which 0 does not escape to infinity under repeated application
of z ↦ z ^ 2 + c.
abbrev mandelbrotSet := multibrotSet 2
The multibrotSet n is equivalently the set of all parameters c for which the orbit of 0
under z ↦ z ^ n + c does not leave the closed disk of radius 2 ^ (n - 1)⁻¹ around the origin.
@[category API, AMS 37]
theorem multibrotSet_eq {n : ℕ} (hn : 2 ≤ n) :
multibrotSet n = {c | ∀ k, ‖(fun z ↦ z ^ n + c)^[k] 0‖ ≤ 2 ^ (n - 1 : ℝ)⁻¹} := n:ℕhn:2 ≤ n⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹}
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹}
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ r}
have hr : 0 < r := n:ℕhn:2 ≤ n⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹} All goals completed! 🐙
have hr' : r ^ (n - 1) = 2 := n:ℕhn:2 ≤ n⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹}
All goals completed! 🐙
have hr'' : r ^ n = 2 * r := n:ℕhn:2 ≤ n⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹} All goals completed! 🐙
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂ⊢ c ∈ multibrotSet n ↔ c ∈ {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ r}; n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:c ∈ multibrotSet nk:ℕ⊢ ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rn:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:c ∈ {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ r}h':Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)⊢ False n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:c ∈ multibrotSet nk:ℕ⊢ ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rn:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:c ∈ {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ r}h':Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)⊢ False n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rh':Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)⊢ False
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:¬Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)k:ℕ⊢ ‖(fun z => z ^ n + c)^[k] 0‖ ≤ r n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:¬Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)k:ℕh':¬‖(fun z => z ^ n + c)^[k] 0‖ ≤ r⊢ Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)
replace ⟨k, h, h'⟩ :
∃ k, r < ‖(fun z ↦ z ^ n + c)^[k] 0‖ ∧ ‖c‖ ≤ ‖(fun z ↦ z ^ n + c)^[k] 0‖ := n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:¬Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)k:ℕh':¬‖(fun z => z ^ n + c)^[k] 0‖ ≤ r⊢ ∃ k, r < ‖(fun z => z ^ n + c)^[k] 0‖ ∧ ‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖
refine (le_or_gt ‖c‖ r).elim (fun h ↦ ⟨k, ?_, ?_⟩) fun h ↦ ⟨1, n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh✝:¬Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)k:ℕh':¬‖(fun z => z ^ n + c)^[k] 0‖ ≤ rh:r < ‖c‖⊢ r < ‖(fun z => z ^ n + c)^[1] 0‖ ∧ ‖c‖ ≤ ‖(fun z => z ^ n + c)^[1] 0‖
All goals completed! 🐙⟩ n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh✝:¬Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)k:ℕh':¬‖(fun z => z ^ n + c)^[k] 0‖ ≤ rh:‖c‖ ≤ r⊢ r < ‖(fun z => z ^ n + c)^[k] 0‖n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh✝:¬Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)k:ℕh':¬‖(fun z => z ^ n + c)^[k] 0‖ ≤ rh:‖c‖ ≤ r⊢ ‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ All goals completed! 🐙
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - r⊢ Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)
have ha : 0 < a := n:ℕhn:2 ≤ n⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹} n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - r⊢ 0 < ‖(fun z => z ^ n + c)^[k] 0‖ - r; All goals completed! 🐙
have h' m : r + a * n ^ m ≤ ‖(fun z ↦ z ^ n + c)^[k + m] 0‖ := n:ℕhn:2 ≤ n⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹}
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))⊢ r + a * ↑n ^ 0 ≤ ‖(fun z => z ^ n + c)^[k + 0] 0‖n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖⊢ r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[k + (m + 1)] 0‖
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))⊢ r + a * ↑n ^ 0 ≤ ‖(fun z => z ^ n + c)^[k + 0] 0‖ All goals completed! 🐙
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖⊢ r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[k + (m + 1)] 0‖ n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖⊢ r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[k + m] 0 ^ n + c‖
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖⊢ r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[k + m] 0 ^ n‖ - ‖c‖
replace hm :
r ^ n + a * n ^ m * r ^ (n - 1) * ↑n ≤ ‖(fun z ↦ z ^ n + c)^[k + m] 0‖ ^ n := n:ℕhn:2 ≤ n⊢ multibrotSet n = {c | ∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ 2 ^ (↑n - 1)⁻¹}
grw [← hmn:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖⊢ r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n
c:ℂk:ℕm:ℕhn:1 < 0r:ℝ := 2 ^ (↑0 - 1)⁻¹hr:0 < rhr':r ^ (0 - 1) = 2hr'':r ^ 0 = 2 * rh:r < ‖(fun z => z ^ 0 + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ 0 + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ 0 + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑0 ^ m ≤ ‖(fun z => z ^ 0 + c)^[k + m] 0‖⊢ r ^ 0 + a * ↑0 ^ m * r ^ (0 - 1) * ↑0 ≤ (r + a * ↑0 ^ m) ^ 0c:ℂk:ℕm:ℕn✝:ℕhn:1 < n✝ + 1r:ℝ := 2 ^ (↑(n✝ + 1) - 1)⁻¹hr:0 < rhr':r ^ (n✝ + 1 - 1) = 2hr'':r ^ (n✝ + 1) = 2 * rh:r < ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑(n✝ + 1) ^ m ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k + m] 0‖⊢ r ^ (n✝ + 1) + a * ↑(n✝ + 1) ^ m * r ^ (n✝ + 1 - 1) * ↑(n✝ + 1) ≤ (r + a * ↑(n✝ + 1) ^ m) ^ (n✝ + 1)
c:ℂk:ℕm:ℕhn:1 < 0r:ℝ := 2 ^ (↑0 - 1)⁻¹hr:0 < rhr':r ^ (0 - 1) = 2hr'':r ^ 0 = 2 * rh:r < ‖(fun z => z ^ 0 + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ 0 + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ 0 + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑0 ^ m ≤ ‖(fun z => z ^ 0 + c)^[k + m] 0‖⊢ r ^ 0 + a * ↑0 ^ m * r ^ (0 - 1) * ↑0 ≤ (r + a * ↑0 ^ m) ^ 0 All goals completed! 🐙
c:ℂk:ℕm:ℕn✝:ℕhn:1 < n✝ + 1r:ℝ := 2 ^ (↑(n✝ + 1) - 1)⁻¹hr:0 < rhr':r ^ (n✝ + 1 - 1) = 2hr'':r ^ (n✝ + 1) = 2 * rh:r < ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑(n✝ + 1) ^ m ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k + m] 0‖⊢ r ^ (n✝ + 1) + a * ↑(n✝ + 1) ^ m * r ^ (n✝ + 1 - 1) * ↑(n✝ + 1) ≤
∑ m_1 ∈ Finset.range (n✝ + 1 + 1), (a * ↑(n✝ + 1) ^ m) ^ m_1 * r ^ (n✝ + 1 - m_1) * ↑((n✝ + 1).choose m_1)
refine .trans ?_ <| Finset.add_le_sum (c:ℂk:ℕm:ℕn✝:ℕhn:1 < n✝ + 1r:ℝ := 2 ^ (↑(n✝ + 1) - 1)⁻¹hr:0 < rhr':r ^ (n✝ + 1 - 1) = 2hr'':r ^ (n✝ + 1) = 2 * rh:r < ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑(n✝ + 1) ^ m ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k + m] 0‖⊢ ∀ i ∈ Finset.range (n✝ + 1 + 1), 0 ≤ (a * ↑(n✝ + 1) ^ m) ^ i * r ^ (n✝ + 1 - i) * ↑((n✝ + 1).choose i) c:ℂk:ℕm:ℕn✝:ℕhn:1 < n✝ + 1r:ℝ := 2 ^ (↑(n✝ + 1) - 1)⁻¹hr:0 < rhr':r ^ (n✝ + 1 - 1) = 2hr'':r ^ (n✝ + 1) = 2 * rh:r < ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑(n✝ + 1) ^ m ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k + m] 0‖i✝:ℕa✝:i✝ ∈ Finset.range (n✝ + 1 + 1)⊢ 0 ≤ (a * ↑(n✝ + 1) ^ m) ^ i✝ * r ^ (n✝ + 1 - i✝) * ↑((n✝ + 1).choose i✝); All goals completed! 🐙) ?_ ?_ zero_ne_one c:ℂk:ℕm:ℕn✝:ℕhn:1 < n✝ + 1r:ℝ := 2 ^ (↑(n✝ + 1) - 1)⁻¹hr:0 < rhr':r ^ (n✝ + 1 - 1) = 2hr'':r ^ (n✝ + 1) = 2 * rh:r < ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑(n✝ + 1) ^ m ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k + m] 0‖⊢ r ^ (n✝ + 1) + a * ↑(n✝ + 1) ^ m * r ^ (n✝ + 1 - 1) * ↑(n✝ + 1) ≤
(a * ↑(n✝ + 1) ^ m) ^ 0 * r ^ (n✝ + 1 - 0) * ↑((n✝ + 1).choose 0) +
(a * ↑(n✝ + 1) ^ m) ^ 1 * r ^ (n✝ + 1 - 1) * ↑((n✝ + 1).choose 1)c:ℂk:ℕm:ℕn✝:ℕhn:1 < n✝ + 1r:ℝ := 2 ^ (↑(n✝ + 1) - 1)⁻¹hr:0 < rhr':r ^ (n✝ + 1 - 1) = 2hr'':r ^ (n✝ + 1) = 2 * rh:r < ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑(n✝ + 1) ^ m ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k + m] 0‖⊢ 0 ∈ Finset.range (n✝ + 1 + 1)c:ℂk:ℕm:ℕn✝:ℕhn:1 < n✝ + 1r:ℝ := 2 ^ (↑(n✝ + 1) - 1)⁻¹hr:0 < rhr':r ^ (n✝ + 1 - 1) = 2hr'':r ^ (n✝ + 1) = 2 * rh:r < ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ (n✝ + 1) + c)^[k] 0‖ - rha:0 < ahm:r + a * ↑(n✝ + 1) ^ m ≤ ‖(fun z => z ^ (n✝ + 1) + c)^[k + m] 0‖⊢ 1 ∈ Finset.range (n✝ + 1 + 1) All goals completed! 🐙
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
_fvar.103756 n)
(Nat.casesAuxOn (motive := fun a_1 => n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1))) Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1))) (Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1)) (Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(Eq.refl n))⊢ r + a * (↑n ^ m * ↑n) ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖
grw [← hm, h'n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
_fvar.103756 n)
(Nat.casesAuxOn (motive := fun a_1 => n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1))) Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1))) (Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1)) (Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(Eq.refl n))⊢ r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
_fvar.103756 n)
(Nat.casesAuxOn (motive := fun a_1 => n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1))) Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1))) (Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1)) (Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(Eq.refl n))⊢ r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - (a + r)
suffices a ≤ a * (n * n ^ m) n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
_fvar.103756 n)
(Nat.casesAuxOn (motive := fun a_1 => n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1))) Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1))) (Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1)) (Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(Eq.refl n))this:a ≤ a * (↑n * ↑n ^ m) := ?m.613⊢ r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - (a + r) All goals completed! 🐙
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
_fvar.103756 n)
(Nat.casesAuxOn (motive := fun a_1 => n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1))) Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1))) (Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1)) (Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(Eq.refl n))⊢ 1 ≤ ↑n * ↑n ^ m
n:ℕhn✝:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h':‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))m:ℕhm:r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
_fvar.103756 n)
(Nat.casesAuxOn (motive := fun a_1 => n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg (fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1))) Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1))) (Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1)) (Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h' ha _fvar.103756)
(Eq.refl n))hn:1 ≤ ↑n := Nat.one_le_cast.mpr (LT.lt.le hn✝)⊢ 1 ≤ ↑n * ↑n ^ m
All goals completed! 🐙
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h':∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
m⊢ Tendsto (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) atTop atTop
suffices h' : Tendsto (fun m ↦ ‖(fun z ↦ z ^ n + c)^[k + m] 0‖) atTop atTop n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝¹:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h'✝:∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝¹ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
mh':Tendsto (fun m => ‖(fun z => z ^ n + c)^[k + m] 0‖) atTop atTop := ?m.710⊢ Tendsto (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) atTop atTop
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝¹:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h'✝:∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝¹ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
mh':∀ (b : ℝ), ∃ i, ∀ (a : ℕ), i ≤ a → b ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖⊢ ∀ (b : ℝ), ∃ i, ∀ (a : ℕ), i ≤ a → b ≤ ‖(fun z => z ^ n + c)^[a] 0‖
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝¹:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h'✝:∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝¹ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
mh':∀ (b : ℝ), ∃ i, ∀ (a : ℕ), i ≤ a → b ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖x:ℝ⊢ ∃ i, ∀ (a : ℕ), i ≤ a → x ≤ ‖(fun z => z ^ n + c)^[a] 0‖; n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝²:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h'✝¹:∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝¹ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
mh'✝:∀ (b : ℝ), ∃ i, ∀ (a : ℕ), i ≤ a → b ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖x:ℝl:ℕh':∀ (a : ℕ), l ≤ a → x ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖⊢ ∃ i, ∀ (a : ℕ), i ≤ a → x ≤ ‖(fun z => z ^ n + c)^[a] 0‖
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝²:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h'✝¹:∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝¹ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
mh'✝:∀ (b : ℝ), ∃ i, ∀ (a : ℕ), i ≤ a → b ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖x:ℝl:ℕh':∀ (a : ℕ), l ≤ a → x ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖m:ℕhm:k + l ≤ m⊢ x ≤ ‖(fun z => z ^ n + c)^[m] 0‖
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝²:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h'✝¹:∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝¹ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
mh'✝:∀ (b : ℝ), ∃ i, ∀ (a : ℕ), i ≤ a → b ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖x:ℝl:ℕm:ℕhm:k + l ≤ mh':x ≤ ‖(fun z => z ^ n + c)^[k + (m - k)] 0‖⊢ x ≤ ‖(fun z => z ^ n + c)^[m] 0‖
rwa [Nat.add_sub_cancel' <| (Nat.le_add_right _ _).trans hmn:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂk:ℕh:r < ‖(fun z => z ^ n + c)^[k] 0‖h'✝²:‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖a:ℝ := ‖(fun z => z ^ n + c)^[k] 0‖ - rha:0 < a :=
id
(lt_of_not_ge fun a =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Tactic.Ring.sub_pf Mathlib.Tactic.Ring.neg_zero
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast +
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1)) (Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_neg_of_le (Mathlib.Tactic.Linarith.sub_neg_of_lt h)
(Mathlib.Tactic.Linarith.sub_nonpos_of_le a))))h'✝¹:∀ (m : ℕ), r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ :=
fun m =>
Nat.recAux
(of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congrArg (HAdd.hAdd r)
(Eq.trans (congrArg (HMul.hMul (‖(fun z => z ^ n + c)^[k] 0‖ - r)) (pow_zero ↑n))
(mul_one (‖(fun z => z ^ n + c)^[k] 0‖ - r))))
(add_sub_cancel r ‖(fun z => z ^ n + c)^[k] 0‖)))
(congrArg (fun x => ‖(fun z => z ^ n + c)^[x] 0‖) (add_zero k)))
(le_refl._simp_1 ‖(fun z => z ^ n + c)^[k] 0‖)))
(fun m hm =>
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖(fun z => z ^ n + c)^[_a] 0‖) (Eq.symm (add_assoc k m 1))))
(Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ ‖_a‖) (iterate_succ_apply' (fun z => z ^ n + c) (k + m) 0)))
(LE.le.trans
(have hm :=
le_imp_le_of_le_of_le (le_refl (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(pow_le_pow_left₀
(le_of_lt
(add_pos'
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹)
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(lt_trans
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))
hn))
m))))
hm n)
(Nat.casesAuxOn (motive := fun a_1 =>
n = a_1 → r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n) n
(fun h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑0 - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ 0 + c)^[k] 0‖ - r;
fun ha hm =>
of_eq_true
(Eq.trans
(congr
(congrArg LE.le
(Eq.trans
(congr (congrArg HAdd.hAdd (pow_zero r))
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr (congrArg (fun x => HMul.hMul (a * x ^ m)) (CharP.cast_eq_zero ℝ 0))
(Eq.trans (congrArg (HPow.hPow r) (zero_tsub 1)) (pow_zero r)))
(mul_one (a * 0 ^ m))))
(CharP.cast_eq_zero ℝ 0))
(mul_zero (a * 0 ^ m))))
(add_zero 1)))
(Eq.trans (congrArg (fun x => (r + a * x ^ m) ^ 0) (CharP.cast_eq_zero ℝ 0))
(pow_zero (r + a * 0 ^ m))))
(le_refl._simp_1 1)))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(fun n_1 h_1 =>
Eq.ndrec (motive := fun {n} =>
1 < n →
let r := 2 ^ (↑n - 1)⁻¹;
0 < r →
r ^ (n - 1) = 2 →
r ^ n = 2 * r →
r < ‖(fun z => z ^ n + c)^[k] 0‖ →
‖c‖ ≤ ‖(fun z => z ^ n + c)^[k] 0‖ →
let a := ‖(fun z => z ^ n + c)^[k] 0‖ - r;
0 < a →
r + a * ↑n ^ m ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ →
r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n ≤ (r + a * ↑n ^ m) ^ n)
(fun hn =>
let r := 2 ^ (↑(n_1 + 1) - 1)⁻¹;
fun hr hr' hr'' h h' =>
let a := ‖(fun z => z ^ (n_1 + 1) + c)^[k] 0‖ - r;
fun ha hm =>
Eq.mpr
(id
(congrArg
(fun _a =>
r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a ^ (n_1 + 1))
(add_comm r (a * ↑(n_1 + 1) ^ m))))
(Eq.mpr
(id
(congrArg
(fun _a => r ^ (n_1 + 1) + a * ↑(n_1 + 1) ^ m * r ^ (n_1 + 1 - 1) * ↑(n_1 + 1) ≤ _a)
(add_pow (a * ↑(n_1 + 1) ^ m) r (n_1 + 1))))
(LE.le.trans
(of_eq_true
(Eq.trans
(congr
(congrArg (fun x => LE.le (r ^ (n_1 + 1) + x))
(congr
(congrArg HMul.hMul
(congr
(congrArg (fun x => HMul.hMul (a * x ^ m))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans (Nat.cast_add n_1 1) (congrArg (HAdd.hAdd ↑n_1) Nat.cast_one))))
(congr
(congrArg HAdd.hAdd
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 0)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_zero (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (tsub_zero (n_1 + 1))))
(one_mul (r ^ (n_1 + 1)))))
(Eq.trans (congrArg Nat.cast (Nat.choose_zero_right (n_1 + 1)))
Nat.cast_one))
(mul_one (r ^ (n_1 + 1)))))
(congr
(congrArg HMul.hMul
(congr
(congrArg HMul.hMul
(Eq.trans
(congrArg (fun x => (a * x ^ m) ^ 1)
(Eq.trans (Nat.cast_add n_1 1)
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))
(pow_one (a * (↑n_1 + 1) ^ m))))
(congrArg (HPow.hPow r) (add_tsub_cancel_right n_1 1))))
(Eq.trans
(Eq.trans (congrArg Nat.cast (Nat.choose_one_right (n_1 + 1)))
(Nat.cast_add n_1 1))
(congrArg (HAdd.hAdd ↑n_1) Nat.cast_one)))))
(le_refl._simp_1 (r ^ (n_1 + 1) + a * (↑n_1 + 1) ^ m * r ^ n_1 * (↑n_1 + 1)))))
(Finset.add_le_sum
(fun i a_1 =>
mul_nonneg
(le_of_lt
(mul_pos
(pow_pos
(mul_pos ha
(pow_pos
(Nat.cast_pos'.mpr
(Right.add_pos_of_nonneg_of_pos (zero_le n_1)
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℕ (Eq.refl 1))
(Eq.refl (Nat.ble 1 1)))))
m))
i)
(pow_pos
(Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑(n_1 + 1) - 1)⁻¹)
(n_1 + 1 - i))))
(Nat.cast_nonneg' ((n_1 + 1).choose i)))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 (n_1 + 1)))))
(of_eq_true
(Eq.trans Finset.mem_range._simp_1
(Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1)
(Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n_1)))))
zero_ne_one))))
(Eq.symm h_1) hn hr hr' hr'' h h'✝¹ ha hm)
(Eq.refl n));
Eq.mpr
(id (congrArg (fun _a => r + a * ↑n ^ (m + 1) ≤ _a - ‖c‖) (norm_pow ((fun z => z ^ n + c)^[k + m] 0) n)))
(Eq.mpr
(id (congrArg (fun _a => r + a * _a ≤ ‖(fun z => z ^ n + c)^[k + m] 0‖ ^ n - ‖c‖) (pow_succ (↑n) m)))
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n))) (sub_le_sub_right hm ‖c‖)
(le_imp_le_of_le_of_le (le_refl (r + a * (↑n ^ m * ↑n)))
(sub_le_sub_left h'✝¹ (r ^ n + a * ↑n ^ m * r ^ (n - 1) * ↑n))
(Eq.mpr
(id
(congrArg
(fun _a =>
r + a * (↑n ^ m * ↑n) ≤ r ^ n + a * ↑n ^ m * _a * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr'))
(Eq.mpr
(id
(congrArg
(fun _a => r + a * (↑n ^ m * ↑n) ≤ _a + a * ↑n ^ m * 2 * ↑n - ‖(fun z => z ^ n + c)^[k] 0‖)
hr''))
(Eq.mpr
(id
(congrArg (fun _a => r + a * (↑n ^ m * ↑n) ≤ 2 * r + a * ↑n ^ m * 2 * ↑n - _a)
(have this :=
of_eq_true
(Eq.trans
(congrArg (Eq ‖(fun z => z ^ n + c)^[k] 0‖)
(sub_add_cancel ‖(fun z => z ^ n + c)^[k] 0‖ r))
(eq_self ‖(fun z => z ^ n + c)^[k] 0‖));
this)))
(have this :=
Eq.mpr (id (congrArg (fun _a => _a) (propext (le_mul_iff_one_le_right ha))))
(have hn := Nat.one_le_cast.mpr (LT.lt.le hn);
Eq.mpr (id ge_iff_le._simp_1)
(Eq.mp
(Eq.trans
(implies_congr zero_le_one._simp_1
(Eq.trans
(implies_congr (Nat.cast_nonneg._simp_1 n)
(congrArg (fun x => x ≤ ↑n * ↑n ^ m) (mul_one 1)))
(forall_const._simp_1 True)))
(forall_const._simp_1 True))
(mul_le_mul hn (one_le_pow₀ hn))));
le_of_not_gt fun a_1 =>
Mathlib.Tactic.Linarith.lt_irrefl
(Eq.mp
(congrArg (fun _a => _a < 0)
(Mathlib.Tactic.Ring.of_eq
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (r ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 * Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 +
0)))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast) +
0)))))
(Mathlib.Tactic.Ring.cast_pos
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 2))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Eq.refl (Int.negOfNat 2))))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 2 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast) +
0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 2).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 2)) +
(r ^ Nat.rawCast 1 * Nat.rawCast 2 +
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 2).rawCast)) +
0)))))))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.atom_pf ‖(fun z => z ^ n + c)^[k] 0‖)
(Mathlib.Tactic.Ring.atom_pf r)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.atom_pf m)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right m (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow
(m ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero
(↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_left (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))))
(Mathlib.Tactic.Ring.mul_zero
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0)))
(Mathlib.Tactic.Ring.zero_mul (↑n ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))
(Mathlib.Tactic.Ring.mul_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) +
0)))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_pf_right (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.mul_one (Int.negOfNat 1).rawCast))))
(Mathlib.Tactic.Ring.mul_zero
(r ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.zero_mul
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) +
0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.add_pf_add_gt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)))
(Mathlib.Tactic.Ring.add_pf_add_lt (r ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(r ^ Nat.rawCast 1 *
(↑n ^ Nat.rawCast 1 *
(↑n ^ (m ^ Nat.rawCast 1 * Nat.rawCast 1) *
(Int.negOfNat 1).rawCast)) +
0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul ‖(fun z => z ^ n + c)^[k] 0‖ (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1))))))
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_mul (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.neg_one_mul
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1)))))))))
Mathlib.Tactic.Ring.neg_zero)))
(Mathlib.Tactic.Ring.add_pf_add_lt
(‖(fun z => z ^ n + c)^[k] 0‖ ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 2))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 1))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Tactic.Ring.add_overlap_pf r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_raw_eq
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 2))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.negOfNat 1)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero ‖(fun z => z ^ n + c)^[k] 0‖
(Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Eq.refl (Int.ofNat 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero r (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_overlap_pf_zero (↑n)
(m ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Meta.NormNum.IsInt.to_isNat
(Mathlib.Meta.NormNum.isInt_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.to_isInt
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1))
(Mathlib.Meta.NormNum.IsInt.of_raw ℝ (Int.negOfNat 1))
(Eq.refl (Int.ofNat 0)))))))
(Mathlib.Tactic.Ring.add_pf_zero_add 0))))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.add_lt_of_le_of_neg
(Mathlib.Tactic.Linarith.sub_nonpos_of_le this)
(Mathlib.Tactic.Linarith.sub_neg_of_lt a_1)))))))))))
(norm_sub_le_norm_add ((fun z => z ^ n + c)^[k + m] 0 ^ n) c))))
mh'✝:∀ (b : ℝ), ∃ i, ∀ (a : ℕ), i ≤ a → b ≤ ‖(fun z => z ^ n + c)^[k + a] 0‖x:ℝl:ℕm:ℕhm:k + l ≤ mh':x ≤ ‖(fun z => z ^ n + c)^[m] 0‖⊢ x ≤ ‖(fun z => z ^ n + c)^[m] 0‖ at h'
All goals completed! 🐙
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rh':Tendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ℂ)⊢ False n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rh':(closedBall 0 r)ᶜ ∈ map (fun k => (fun z => z ^ n + c)^[k] 0) atTop⊢ False
n:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rh':∃ a, ∀ b ≥ a, b ∈ (fun k => (fun z => z ^ n + c)^[k] 0) ⁻¹' (closedBall 0 r)ᶜ⊢ False; n✝:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rn:ℕh':∀ b ≥ n, b ∈ (fun k => (fun z => z ^ n✝ + c)^[k] 0) ⁻¹' (closedBall 0 r)ᶜ⊢ False
exact not_lt_of_ge (h n) (n✝:ℕhn:1 < n := LT.lt.trans_le one_lt_two _fvar.2552r:ℝ := 2 ^ (↑n - 1)⁻¹hr:0 < r :=
Real.rpow_pos_of_pos
(Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl (Nat.ble 1 2)))
(↑n - 1)⁻¹hr':r ^ (n - 1) = 2 :=
of_eq_true
(Eq.trans
(congrArg (fun x => x = 2)
(Eq.trans (multibrotSet_eq._simp_1 (2 ^ (↑n - 1)⁻¹) (n - 1))
(Eq.trans
(Eq.trans
(congrArg (HPow.hPow (2 ^ (↑n - 1)⁻¹))
(Eq.trans (Nat.cast_sub (LT.lt.le hn)) (congrArg (HSub.hSub ↑n) Nat.cast_one)))
((fun y z => Eq.symm (Real.rpow_mul (LT.lt.le two_pos) y z)) (↑n - 1)⁻¹ (↑n - 1)))
(Eq.trans
(congrArg (HPow.hPow 2)
(inv_mul_cancel₀
(of_eq_true
(Eq.trans
(congrArg Not
(eq_false
(have this :=
Eq.mpr (id (Eq.trans multibrotSet_eq._simp_2 (congrArg Not Nat.cast_eq_one._simp_1)))
(Ne.symm (LT.lt.ne hn));
this)))
not_false_eq_true))))
(Real.rpow_one 2)))))
(eq_self 2))hr'':r ^ n = 2 * r :=
of_eq_true
(Eq.trans
(congrArg (Eq (r ^ n))
(Eq.trans (Eq.trans (congrArg (fun x => x * r) (Eq.symm hr')) (multibrotSet_eq._simp_3 r (n - 1)))
(congrArg (HPow.hPow r) (Nat.sub_add_cancel (LT.lt.le hn)))))
(eq_self (r ^ n)))c:ℂh:∀ (k : ℕ), ‖(fun z => z ^ n + c)^[k] 0‖ ≤ rn:ℕh':∀ b ≥ n, b ∈ (fun k => (fun z => z ^ n✝ + c)^[k] 0) ⁻¹' (closedBall 0 r)ᶜ⊢ r < ‖(fun z => z ^ n✝ + c)^[n] 0‖ All goals completed! 🐙)
The mandelbrot set is equivalently the set of all parameters c for which the orbit of 0
under z ↦ z ^ 2 + c does not leave the closed disk of radius two around the origin.
@[category API, AMS 37]
theorem mandelbrotSet_eq : mandelbrotSet = {c | ∀ k, ‖(fun z ↦ z ^ 2 + c)^[k] 0‖ ≤ 2} := ⊢ mandelbrotSet = {c | ∀ (k : ℕ), ‖(fun z => z ^ 2 + c)^[k] 0‖ ≤ 2}
simpa [show (2 - 1 : ℝ) = 1 ⊢ mandelbrotSet = {c | ∀ (k : ℕ), ‖(fun z => z ^ 2 + c)^[k] 0‖ ≤ 2} All goals completed! 🐙] using multibrotSet_eq le_rflThe MLC conjecture, stating that the mandelbrot set is locally connected.
@[category research open, AMS 37]
theorem MLC : LocallyConnectedSpace mandelbrotSet := ⊢ LocallyConnectedSpace ↑mandelbrotSet
All goals completed! 🐙
A stronger version of the MLC conjecture, stating that all multibrots are locally connected.
Note that we don't need to require 2 ≤ n because the conjecture holds in the trivial cases n = 0
and n = 1 too.
@[category research open, AMS 37]
theorem MLC_general_exponent (n : ℕ) : LocallyConnectedSpace (multibrotSet n) := n:ℕ⊢ LocallyConnectedSpace ↑(multibrotSet n)
All goals completed! 🐙
We say that z : ℂ is part of an attracting cycle of period n of f : ℂ → ℂ if it is an
n-periodic point (i.e. f^[n] z = z), f^[n] is differentiable at z, ‖deriv f^[n] z‖ is
strictly less than one, and n > 0.
def IsAttractingCycle (f : ℂ → ℂ) (n : ℕ) (z : ℂ) : Prop :=
(0 < n) ∧ f.IsPeriodicPt n z ∧ DifferentiableAt ℂ f^[n] z ∧ ‖deriv f^[n] z‖ < 1
For example, 0 is part of an attracting 2-cycle of z ↦ z ^ 2 - 1.
@[category test, AMS 37]
theorem isAttractingCycle_z_squared_minus_one : IsAttractingCycle (fun z ↦ z ^ 2 - 1) 2 0 :=
⟨⊢ 0 < 2 All goals completed! 🐙, ⊢ IsPeriodicPt (fun z => z ^ 2 - 1) 2 0 All goals completed! 🐙, ⊢ DifferentiableAt ℂ (fun z => z ^ 2 - 1)^[2] 0 All goals completed! 🐙, ⊢ ‖deriv (fun z => z ^ 2 - 1)^[2] 0‖ < 1 All goals completed! 🐙⟩
On the other hand, while 2 is part of a 1-cycle of z ↦ z ^ 2 - 2, that cycle is not
attracting.
@[category test, AMS 37]
theorem not_isAttractingCycle_z_squared_minus_two : ¬ IsAttractingCycle (fun z ↦ z ^ 2 - 2) 1 2 := ⊢ ¬IsAttractingCycle (fun z => z ^ 2 - 2) 1 2
All goals completed! 🐙
No function has an attracting cycle of period 0. This is important in that it means we don't
need to require 0 < n in the conjectures below.
@[category test, AMS 37]
theorem no_attractingCycle_period_zero (f : ℂ → ℂ) (z : ℂ) : ¬ IsAttractingCycle f 0 z := f:ℂ → ℂz:ℂ⊢ ¬IsAttractingCycle f 0 z
All goals completed! 🐙
The density of hyperbolicity conjecture, stating that the set of all parameters c for which
fun z ↦ z ^ 2 + c has an attracting cycle is dense in the Mandelbrot set.
@[category research open, AMS 37]
theorem density_of_hyperbolicity :
mandelbrotSet ⊆ closure {c | ∃ m z, IsAttractingCycle (fun z ↦ z ^ 2 + c) m z} := ⊢ mandelbrotSet ⊆ closure {c | ∃ m z, IsAttractingCycle (fun z => z ^ 2 + c) m z}
All goals completed! 🐙
The density of hyperbolicity conjecture for Multibrot sets, stating that the set of all
parameters c for which fun z ↦ z ^ n + c has an attracting cycle is dense in multibrotSet n.
Note that we need to require 2 ≤ n because the conjecture is trivially false for n = 1.
@[category research open, AMS 37]
theorem density_of_hyperbolicity_general_exponent {n : ℕ} (hn : 2 ≤ n) :
multibrotSet n ⊆ closure {c | ∃ m z, IsAttractingCycle (fun z ↦ z ^ n + c) m z} := n:ℕhn:2 ≤ n⊢ multibrotSet n ⊆ closure {c | ∃ m z, IsAttractingCycle (fun z => z ^ n + c) m z}
All goals completed! 🐙The boundary of any Multibrot set is measurable because it is closed, so it makes sense to ask about its area.
@[category test, AMS 37]
theorem multibrotSet_frontier_measurable {n : ℕ} : MeasurableSet (frontier (multibrotSet n)) := isClosed_frontier.measurableSetThe boundary of the Mandelbrot set is conjectured to have zero area.
@[category research open, AMS 37]
theorem volume_frontier_mandelbrotSet_eq_zero : volume (frontier mandelbrotSet) = 0 := ⊢ volume (frontier mandelbrotSet) = 0
All goals completed! 🐙
The boundary of any Multibrot set is conjectured to have zero area.
Note that we don't need to exclude the trivial cases n = 0 and n = 1 because the conjecture
holds for them.
@[category research open, AMS 37]
theorem volume_frontier_multibrotSet_eq_zero {n : ℕ} : volume (frontier (multibrotSet n)) = 0 := n:ℕ⊢ volume (frontier (multibrotSet n)) = 0
All goals completed! 🐙
end Mandelbrot