Analysis I, Section 6.5: Some standard limits

I have attempted to make the translation as faithful a paraphrasing as possible of the original text. When there is a choice between a more idiomatic Lean solution and a more faithful translation, I have generally chosen the latter. In particular, there will be places where the Lean code could be "golfed" to be more elegant and idiomatic, but I have consciously avoided doing so.

Main constructions and results of this section:

  • Some standard limits, including limits of sequences of the form 1/n^α, x^n, and x^(1/n).

namespace Chapter6theorem declaration uses `sorry`Sequence.lim_of_const (c:) : ((fun (_:) c):Sequence).TendsTo c := c:(↑fun x => c).TendsTo c All goals completed! 🐙instance Sequence.inst_pow: Pow Sequence where pow a k := { m := a.m seq n := if n a.m then a n ^ k else 0 vanish := a:Sequencek: n < a.m, (if n a.m then a.seq n ^ k else 0) = 0 All goals completed! 🐙 }@[simp] lemma Sequence.pow_eval {a:Sequence} {k: } {n: } (hn : n a.m): (a ^ k) n = a n ^ k := a:Sequencek:n:hn:n a.m(a ^ k).seq n = a.seq n ^ k a:Sequencek:n:hn:n a.m({ hPow := fun a b => { pow := fun a k => { m := a.m, seq := fun n => if n a.m then a.seq n ^ k else 0, vanish := } }.1 a b }.1 a k).seq n = a.seq n ^ k All goals completed! 🐙@[simp] lemma Sequence.pow_one (a:Sequence) : a^1 = a := a:Sequencea ^ 1 = a a:Sequence(a ^ 1).m = a.ma:Sequencen:(a ^ 1).seq n = a.seq n; a:Sequencen:(a ^ 1).seq n = a.seq n; a:Sequencen:(if n a.m then Monoid.npow 1 (a.seq n) else 0) = a.seq n; a:Sequencen:h:n a.mMonoid.npow 1 (a.seq n) = a.seq na:Sequencen:h:¬n a.m0 = a.seq n; a:Sequencen:h:¬n a.m0 = a.seq n; All goals completed! 🐙lemma Sequence.pow_succ (a:Sequence) (k:): a^(k+1) = a^k * a := a:Sequencek:a ^ (k + 1) = a ^ k * a a:Sequencek:(a ^ (k + 1)).m = (a ^ k * a).ma:Sequencek:x:(a ^ (k + 1)).seq x = (a ^ k * a).seq x a:Sequencek:(a ^ (k + 1)).m = (a ^ k * a).m a:Sequencek:(a ^ k * a).m = (a ^ (k + 1)).m; All goals completed! 🐙 a:Sequencek:x:(a ^ (k + 1)).seq x = (a ^ k * a).seq x a:Sequencek:x:(a ^ (k + 1)).seq x = (a ^ k).seq x * a.seq x a:Sequencek:x:h:x a.m(a ^ (k + 1)).seq x = (a ^ k).seq x * a.seq xa:Sequencek:x:h:¬x a.m(a ^ (k + 1)).seq x = (a ^ k).seq x * a.seq x a:Sequencek:x:h:x a.m(a ^ (k + 1)).seq x = (a ^ k).seq x * a.seq x a:Sequencek:x:h:x a.ma.seq x ^ (k + 1) = a.seq x ^ k * a.seq x All goals completed! 🐙 a:Sequencek:x:h:¬x a.m(a ^ (k + 1)).seq x = (a ^ k).seq x * a.seq x a:Sequencek:x:h:¬x a.m(a ^ (k + 1)).seq x = 0 exact vanish _ _ (a:Sequencek:x:h:¬x a.mx < (a ^ (k + 1)).m a:Sequencek:x:h:x < a.mx < (a ^ (k + 1)).m; All goals completed! 🐙)

Corollary 6.5.1

theorem Sequence.lim_of_power_decay {k:} : ((fun (n:) 1/((n:)+1)^(1/(k+1:))):Sequence).TendsTo 0 := k:(↑fun n => 1 / (n + 1) ^ (1 / (k + 1))).TendsTo 0 -- This proof is written to follow the structure of the original text. k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))a.TendsTo 0 have ha : a.BddBelow := k:(↑fun n => 1 / (n + 1) ^ (1 / (k + 1))).TendsTo 0 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))a.BddBelowBy 0; intro n k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))n:a✝:n a.ma.seq n 0; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))n:a✝:n a.m0 if 0 n then ((n.toNat + 1) ^ (k + 1)⁻¹)⁻¹ else 0; All goals completed! 🐙 have ha' : a.IsAntitone := k:(↑fun n => 1 / (n + 1) ^ (1 / (k + 1))).TendsTo 0 intro n k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.ma.seq (n + 1) a.seq n; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 1a.seq (n + 1) a.seq n; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 1(((n + 1).toNat + 1) ^ (k + 1)⁻¹)⁻¹ ((n.toNat + 1) ^ (k + 1)⁻¹)⁻¹ k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 1n.toNat + 1 (n + 1).toNat + 1k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 n.toNat + 1k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 (n + 1).toNat + 1k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 < (k + 1)⁻¹k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 < ((n + 1).toNat + 1) ^ (k + 1)⁻¹k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 < (n.toNat + 1) ^ (k + 1)⁻¹ k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 1n.toNat + 1 (n + 1).toNat + 1k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 n.toNat + 1k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 (n + 1).toNat + 1k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 < (k + 1)⁻¹k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 < ((n + 1).toNat + 1) ^ (k + 1)⁻¹k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))n:hn:n a.mhn':0 n + 10 < (n.toNat + 1) ^ (k + 1)⁻¹ try All goals completed! 🐙 All goals completed! 🐙 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenta.TendsTo 0 have hpow (n:): (a^(n+1)).Convergent lim (a^(n+1)) = (lim a)^(n+1) := k:(↑fun n => 1 / (n + 1) ^ (1 / (k + 1))).TendsTo 0 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergent(a ^ (0 + 1)).Convergent lim (a ^ (0 + 1)) = lim a ^ (0 + 1)k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergentn:ih:(a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1)(a ^ (n + 1 + 1)).Convergent lim (a ^ (n + 1 + 1)) = lim a ^ (n + 1 + 1) k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergent(a ^ (0 + 1)).Convergent lim (a ^ (0 + 1)) = lim a ^ (0 + 1) All goals completed! 🐙 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergentn:ih:(a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1)(a ^ (n + 1) * a).Convergent lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1); k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergentn:ih:(a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1)lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergentn:ih:(a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1)lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = lim a ^ (n + 1) * lim a; All goals completed! 🐙 have hlim : (lim a)^(k+1) = 0 := k:(↑fun n => 1 / (n + 1) ^ (1 / (k + 1))).TendsTo 0 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nlim (a ^ (k + 1)) = 0; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) na ^ (k + 1) = fun n => (n + 1)⁻¹; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) n(a ^ (k + 1)).m = (↑fun n => (n + 1)⁻¹).mk:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:(a ^ (k + 1)).seq x✝ = (↑fun n => (n + 1)⁻¹).seq x✝; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:(a ^ (k + 1)).seq x✝ = (↑fun n => (n + 1)⁻¹).seq x✝ k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:(if x✝ 0 then Monoid.npow (k + 1) (if x✝ 0 then 1 / (x✝.toNat + 1).rpow (1 / (k + 1)) else 0) else 0) = if x✝ 0 then (x✝.toNat + 1)⁻¹ else 0; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:x✝ 0Monoid.npow (k + 1) (1 / (x✝.toNat + 1).rpow (1 / (k + 1))) = (x✝.toNat + 1)⁻¹k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:¬x✝ 00 = 0 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:x✝ 0Monoid.npow (k + 1) (1 / (x✝.toNat + 1).rpow (1 / (k + 1))) = (x✝.toNat + 1)⁻¹ k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:x✝ 0((x✝.toNat + 1) ^ (k + 1)⁻¹) ^ (k + 1) = x✝.toNat + 1 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:x✝ 0(x✝.toNat + 1) ^ ((k + 1)⁻¹ * (k + 1)) = x✝.toNat + 1 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:x✝ 0(k + 1)⁻¹ * (k + 1) = 1; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:x✝ 0(k + 1) = k + 1; k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:x✝ 0k + 1 = k + 1; All goals completed! 🐙 k:a:Sequence := fun n => 1 / (n + 1) ^ (1 / (k + 1))ha:a.BddBelow := Exists.intro 0 fun n a_1 => Eq.mpr (id (Eq.trans (congrFun' (congrArg GE.ge (ite_congr ge_iff_le._simp_1 (fun a => Eq.trans (congrArg (HDiv.hDiv 1) (congrArg (HPow.hPow (n.toNat + 1)) (one_div (k + 1)))) (one_div ((n.toNat + 1) ^ (k + 1)⁻¹))) fun a => Eq.refl 0)) 0) ge_iff_le._simp_1)) (Mathlib.Meta.Positivity.ite_nonneg_of_pos_of_nonneg (0 n) (inv_pos_of_pos (Real.rpow_pos_of_pos (Right.add_pos_of_nonneg_of_pos (Nat.cast_nonneg' n.toNat) (Mathlib.Meta.Positivity.pos_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one) (Eq.refl (Nat.ble 1 1)))) (k + 1)⁻¹)) (Mathlib.Meta.Positivity.nonneg_of_isNat (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_zero)))ha':a.Convergenthpow: (n : ), (a ^ (n + 1)).Convergent lim (a ^ (n + 1)) = lim a ^ (n + 1) := fun n => Nat.recAux (of_eq_true (Eq.trans (congr (congrArg And (Eq.trans (congrArg Convergent (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a))) (eq_true ha'))) (Eq.trans (congr (congrArg Eq (congrArg lim (Eq.trans (congrArg (HPow.hPow a) (zero_add 1)) (pow_one a)))) (Eq.trans (congrArg (HPow.hPow (lim a)) (zero_add 1)) (_root_.pow_one (lim a)))) (eq_self (lim a)))) (and_self True))) (fun n ih => Eq.mpr (id (congrArg (fun _a => _a.Convergent lim _a = lim a ^ (n + 1 + 1)) (pow_succ a (n + 1)))) (Eq.mpr (eq_of_heq ((fun a b b' e'_2 => Eq.casesOn (motive := fun a_1 x => b' = a_1 e'_2 x (a b) (a b')) e'_2 (fun h => Eq.ndrec (motive := fun b' => (e_2 : b = b'), e_2 Eq.refl b (a b) (a b')) (fun e_2 h => HEq.refl (a b)) (Eq.symm h) e'_2) (Eq.refl b') (HEq.refl e'_2)) (a ^ (n + 1) * a).Convergent (lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1)) (lim (a ^ (n + 1) * a) = lim (a ^ (n + 1)) * lim a) (propext (Eq.mpr (id (congrArg (fun _a => lim (a ^ (n + 1) * a) = lim a ^ (n + 1 + 1) lim (a ^ (n + 1) * a) = _a * lim a) ih.right)) (lim_of_power_decay._proof_10 n))))) (lim_mul ih.left ha'))) nx✝:h:¬x✝ 00 = 0 All goals completed! 🐙 All goals completed! 🐙

Lemma 6.5.2 / Exercise 6.5.2

theorem declaration uses `sorry`Sequence.lim_of_geometric {x:} (hx: |x| < 1) : ((fun (n:) x^n):Sequence).TendsTo 0 := x:hx:|x| < 1(↑fun n => x ^ n).TendsTo 0 All goals completed! 🐙

Lemma 6.5.2 / Exercise 6.5.2

theorem declaration uses `sorry`Sequence.lim_of_geometric' {x:} (hx: x = 1) : ((fun (n:) x^n):Sequence).TendsTo 1 := x:hx:x = 1(↑fun n => x ^ n).TendsTo 1 All goals completed! 🐙

Lemma 6.5.2 / Exercise 6.5.2

theorem declaration uses `sorry`Sequence.lim_of_geometric'' {x:} (hx: x = -1 |x| > 1) : ((fun (n:) x^n):Sequence).Divergent := x:hx:x = -1 |x| > 1(↑fun n => x ^ n).Divergent All goals completed! 🐙

Lemma 6.5.3 / Exercise 6.5.3

theorem declaration uses `sorry`Sequence.lim_of_roots {x:} (hx: x > 0) : ((fun (n:) x^(1/(n+1:))):Sequence).TendsTo 1 := x:hx:x > 0(↑fun n => x ^ (1 / (n + 1))).TendsTo 1 All goals completed! 🐙

Exercise 6.5.1

theorem declaration uses `sorry`Sequence.lim_of_rat_power_decay {q:} (hq: q > 0) : (fun (n:) 1/((n+1:)^(q:)):Sequence).TendsTo 0 := q:hq:q > 0(↑fun n => 1 / (n + 1) ^ q).TendsTo 0 All goals completed! 🐙

Exercise 6.5.1

theorem declaration uses `sorry`Sequence.lim_of_rat_power_growth {q:} (hq: q > 0) : (fun (n:) ((n+1:)^(q:)):Sequence).Divergent := q:hq:q > 0(↑fun n => (n + 1) ^ q).Divergent All goals completed! 🐙
end Chapter6