/- 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 FormalConjecturesUtil

Conjectures about the Mandelbrot and Multibrot sets

This file adds three conjectures about the Mandelbrot and Multibrot sets:

    the MLC conjecture, stating that these sets are locally connected

    the density of hyperbolicity conjecture, stating that parameters with attracting cycles are dense in the Mandelbrot and Multibrot sets

    the conjecture that the boundaries of these sets have zero area. The first two conjectures are related in that the former implies the latter.

References:

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 nmultibrotSet 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.2552multibrotSet 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 nmultibrotSet 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 nmultibrotSet 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 nmultibrotSet 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 rTendsto (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 < cr < (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 rr < (fun z => z ^ n + c)^[k] 0n: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 rc (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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (fun z => z ^ n + c)^[k] 0 - rTendsto (fun k => (fun z => z ^ n + c)^[k] 0) atTop (cobounded ) have ha : 0 < a := n:hn:2 nmultibrotSet 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (fun z => z ^ n + c)^[k] 0 - r0 < (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 nmultibrotSet 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0n: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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0r + 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0r + 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0r + 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0r + 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 nmultibrotSet 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0r ^ 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] 0h':c (fun z => z ^ 0 + c)^[k] 0a: := (fun z => z ^ 0 + c)^[k] 0 - rha:0 < ahm:r + a * 0 ^ m (fun z => z ^ 0 + c)^[k + m] 0r ^ 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] 0h':c (fun z => z ^ (n✝ + 1) + c)^[k] 0a: := (fun z => z ^ (n✝ + 1) + c)^[k] 0 - rha:0 < ahm:r + a * (n✝ + 1) ^ m (fun z => z ^ (n✝ + 1) + c)^[k + m] 0r ^ (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] 0h':c (fun z => z ^ 0 + c)^[k] 0a: := (fun z => z ^ 0 + c)^[k] 0 - rha:0 < ahm:r + a * 0 ^ m (fun z => z ^ 0 + c)^[k + m] 0r ^ 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] 0h':c (fun z => z ^ (n✝ + 1) + c)^[k] 0a: := (fun z => z ^ (n✝ + 1) + c)^[k] 0 - rha:0 < ahm:r + a * (n✝ + 1) ^ m (fun z => z ^ (n✝ + 1) + c)^[k + m] 0r ^ (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] 0h':c (fun z => z ^ (n✝ + 1) + c)^[k] 0a: := (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] 0h':c (fun z => z ^ (n✝ + 1) + c)^[k] 0a: := (fun z => z ^ (n✝ + 1) + c)^[k] 0 - rha:0 < ahm:r + a * (n✝ + 1) ^ m (fun z => z ^ (n✝ + 1) + c)^[k + m] 0i✝: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] 0h':c (fun z => z ^ (n✝ + 1) + c)^[k] 0a: := (fun z => z ^ (n✝ + 1) + c)^[k] 0 - rha:0 < ahm:r + a * (n✝ + 1) ^ m (fun z => z ^ (n✝ + 1) + c)^[k + m] 0r ^ (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] 0h':c (fun z => z ^ (n✝ + 1) + c)^[k] 0a: := (fun z => z ^ (n✝ + 1) + c)^[k] 0 - rha:0 < ahm:r + a * (n✝ + 1) ^ m (fun z => z ^ (n✝ + 1) + c)^[k + m] 00 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] 0h':c (fun z => z ^ (n✝ + 1) + c)^[k] 0a: := (fun z => z ^ (n✝ + 1) + c)^[k] 0 - rha:0 < ahm:r + a * (n✝ + 1) ^ m (fun z => z ^ (n✝ + 1) + c)^[k + m] 01 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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.613r + 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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0h':c (fun z => z ^ n + c)^[k] 0a: := (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] 0h'✝:c (fun z => z ^ n + c)^[k] 0a: := (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)))) mTendsto (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] 0h'✝¹:c (fun z => z ^ n + c)^[k] 0a: := (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.710Tendsto (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] 0h'✝¹:c (fun z => z ^ n + c)^[k] 0a: := (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] 0h'✝¹:c (fun z => z ^ n + c)^[k] 0a: := (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] 0x: 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] 0h'✝²:c (fun z => z ^ n + c)^[k] 0a: := (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] 0x: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] 0h'✝²:c (fun z => z ^ n + c)^[k] 0a: := (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] 0x:l:h': (a : ), l a x (fun z => z ^ n + c)^[k + a] 0m:hm:k + l mx (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] 0h'✝²:c (fun z => z ^ n + c)^[k] 0a: := (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] 0x:l:m:hm:k + l mh':x (fun z => z ^ n + c)^[k + (m - k)] 0x (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] 0h'✝²:c (fun z => z ^ n + c)^[k] 0a: := (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] 0x:l:m:hm:k + l mh':x (fun z => z ^ n + c)^[m] 0x (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) atTopFalse 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_rfl

The MLC conjecture, stating that the mandelbrot set is locally connected.

@[category research open, AMS 37] theorem declaration uses 'sorry'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 declaration uses 'sorry'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 declaration uses 'sorry'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 declaration uses 'sorry'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 nmultibrotSet 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.measurableSet

The boundary of the Mandelbrot set is conjectured to have zero area.

@[category research open, AMS 37] theorem declaration uses 'sorry'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 declaration uses 'sorry'volume_frontier_multibrotSet_eq_zero {n : } : volume (frontier (multibrotSet n)) = 0 := n:volume (frontier (multibrotSet n)) = 0 All goals completed! 🐙 end Mandelbrot