/-
Copyright 2026 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 FormalConjecturesUtilErdős Problem 1049
[Er48] Erdős, P., On arithmetical properties of Lambert series. J. Indian Math. Soc. (N.S.) (1948), 63-66.
namespace Erdos1049
open ArithmeticFunction Filter
Let $t>1$ be a rational number. Is $\sum_{n=1}^\infty\frac{1}{t^n-1}=\sum_{n=1}^\infty \frac{\tau(n)}{t^n}$ irrational, where $\tau(n)$ counts the divisors of $n$?
A conjecture of Chowla.
@[category research open, AMS 11]
theorem erdos_1049 :
answer(sorry) ↔ ∀ t : ℚ, t > 1 → Irrational (∑' n : ℕ+, 1 / ((t : ℝ) ^ (n : ℕ) - 1)) := ⊢ True ↔ ∀ t > 1, Irrational (∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1))
All goals completed! 🐙
Erdős [Er48] proved that this is true if $t\geq 2$ is an integer.
@[category research solved, AMS 11]
theorem erdos_1049.variants.geq_2_integer :
∀ t : ℤ, t ≥ 2 → Irrational (∑' n : ℕ+, 1 / ((t : ℝ) ^ (n : ℕ) - 1)) := ⊢ ∀ t ≥ 2, Irrational (∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1))
All goals completed! 🐙
Convergent case (|t| > 1).
Substitute r := t⁻¹ so ‖r‖ < 1, then apply Mathlib's series identity
tsum_pow_div_one_sub_eq_tsum_sigma at k = 0:
$$\sum_{n \ge 1} \frac{r^n}{1 - r^n} = \sum_{n \ge 1} \sigma_0(n) \cdot r^n.$$
After clearing denominators, both sides match the Lambert identity:
LHS becomes 1/(t^n - 1) and RHS becomes τ(n) / t^n.
@[category API, AMS 11]
private lemma lambert_convergent (t : ℝ) (ht : 1 < |t|) :
∑' n : ℕ+, 1 / (t ^ (n : ℕ) - 1) =
∑' n : ℕ+, ((n : ℕ).divisors.card : ℝ) / (t ^ (n : ℕ)) := t:ℝht:1 < |t|⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
-- `|t| > 1` implies `t ≠ 0`, hence `t^n ≠ 0` for all n.
have ht0 : t ≠ 0 := fun h => t:ℝht:1 < |t|h:t = 0⊢ False ht:1 < |0|⊢ False; ht:1 < 0⊢ False; All goals completed! 🐙
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
-- Substitution `r := t⁻¹`, so `|r| < 1`.
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rfl⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
have hr_norm : ‖r‖ < 1 := t:ℝht:1 < |t|⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rfl⊢ |t|⁻¹ < 1; All goals completed! 🐙
-- Apply the Mathlib identity. Now reduce each side of our goal to its form.
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n)t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0⊢ ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n
-- LHS: show `1 / (t^n - 1) = r^n / (1 - r^n)`. After substituting `r = 1/t`,
-- this is the algebraic identity `1/(t^n - 1) = (1/t^n) / (1 - 1/t^n)`,
-- valid when `t^n ≠ 0` and `t^n ≠ 1`.
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0⊢ ∀ (b : ℕ+), 1 / (t ^ ↑b - 1) = ↑↑b ^ 0 * r ^ ↑b / (1 - r ^ ↑b); t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+⊢ 1 / (t ^ ↑n - 1) = ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n)
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+hp:t ^ ↑n ≠ 0 := htn ↑n⊢ 1 / (t ^ ↑n - 1) = ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n)
have hrn : r ^ (n : ℕ) = (t ^ (n : ℕ))⁻¹ := t:ℝht:1 < |t|⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n All goals completed! 🐙
-- `t^n ≠ 1`: would imply `|t|^n = 1`, but `|t| > 1` gives `|t|^n > 1` since `n ≥ 1`.
have hne1 : t ^ (n : ℕ) - 1 ≠ 0 := t:ℝht:1 < |t|⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+hp:t ^ ↑n ≠ 0 := htn ↑nhrn:r ^ ↑n = (t ^ ↑n)⁻¹ :=
Eq.mpr (_root_.id (congrArg (fun _a => _a ^ ↑n = (t ^ ↑n)⁻¹) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a = (t ^ ↑n)⁻¹) (inv_pow t ↑n))) (Eq.refl (t ^ ↑n)⁻¹))hc:t ^ ↑n - 1 = 0⊢ False
have ht1 : t ^ (n : ℕ) = 1 := t:ℝht:1 < |t|⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n All goals completed! 🐙
have habs1 : |t| ^ (n : ℕ) = 1 := t:ℝht:1 < |t|⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+hp:t ^ ↑n ≠ 0 := htn ↑nhrn:r ^ ↑n = (t ^ ↑n)⁻¹ :=
Eq.mpr (_root_.id (congrArg (fun _a => _a ^ ↑n = (t ^ ↑n)⁻¹) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a = (t ^ ↑n)⁻¹) (inv_pow t ↑n))) (Eq.refl (t ^ ↑n)⁻¹))hc:t ^ ↑n - 1 = 0ht1:t ^ ↑n = 1 :=
Mathlib.Tactic.Linarith.eq_of_not_lt_of_not_gt (t ^ ↑n) 1
(Not.intro 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.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * 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
((Int.negOfNat 1).rawCast + (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul t (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 t (↑n ^ 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_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_eq_of_lt (neg_eq_zero.mpr (sub_eq_zero_of_eq hc))
(Mathlib.Tactic.Linarith.sub_neg_of_lt a))))
(Not.intro 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.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * 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
((Int.negOfNat 1).rawCast + (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul t (↑n ^ 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 t (↑n ^ 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.lt_of_eq_of_lt (sub_eq_zero_of_eq hc) (Mathlib.Tactic.Linarith.sub_neg_of_lt a))))⊢ |1| = 1; All goals completed! 🐙
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+hp:t ^ ↑n ≠ 0 := htn ↑nhrn:r ^ ↑n = (t ^ ↑n)⁻¹ :=
Eq.mpr (_root_.id (congrArg (fun _a => _a ^ ↑n = (t ^ ↑n)⁻¹) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a = (t ^ ↑n)⁻¹) (inv_pow t ↑n))) (Eq.refl (t ^ ↑n)⁻¹))hc:t ^ ↑n - 1 = 0ht1:t ^ ↑n = 1 :=
Mathlib.Tactic.Linarith.eq_of_not_lt_of_not_gt (t ^ ↑n) 1
(Not.intro 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.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * 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
((Int.negOfNat 1).rawCast + (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul t (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 t (↑n ^ 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_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_eq_of_lt (neg_eq_zero.mpr (sub_eq_zero_of_eq hc))
(Mathlib.Tactic.Linarith.sub_neg_of_lt a))))
(Not.intro 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.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * 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
((Int.negOfNat 1).rawCast + (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul t (↑n ^ 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 t (↑n ^ 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.lt_of_eq_of_lt (sub_eq_zero_of_eq hc) (Mathlib.Tactic.Linarith.sub_neg_of_lt a))))habs1:|t| ^ ↑n = 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a = 1) (Eq.symm (abs_pow t ↑n))))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) ht1))
(of_eq_true (Eq.trans (congrArg (fun x => x = 1) abs_one) (eq_self 1))))hlt:1 < |t| ^ ↑n := one_lt_pow₀ ht (LT.lt.ne' (PNat.pos n))⊢ False
All goals completed! 🐙
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+hp:t ^ ↑n ≠ 0 := htn ↑nhrn:r ^ ↑n = (t ^ ↑n)⁻¹ :=
Eq.mpr (_root_.id (congrArg (fun _a => _a ^ ↑n = (t ^ ↑n)⁻¹) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a = (t ^ ↑n)⁻¹) (inv_pow t ↑n))) (Eq.refl (t ^ ↑n)⁻¹))hne1:t ^ ↑n - 1 ≠ 0 :=
fun hc =>
have ht1 :=
Mathlib.Tactic.Linarith.eq_of_not_lt_of_not_gt (t ^ ↑n) 1
(Not.intro 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.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * 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
((Int.negOfNat 1).rawCast + (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul t (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 t (↑n ^ 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_zero_add 0))))
(Mathlib.Tactic.Ring.cast_zero (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))))
(Mathlib.Tactic.Linarith.lt_of_eq_of_lt (neg_eq_zero.mpr (sub_eq_zero_of_eq hc))
(Mathlib.Tactic.Linarith.sub_neg_of_lt a))))
(Not.intro 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.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ Nat.rawCast 1 * 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
((Int.negOfNat 1).rawCast + (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf t) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (t ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left t (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(t ^ (↑n ^ 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
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul t (↑n ^ 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(t ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 t (↑n ^ 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.lt_of_eq_of_lt (sub_eq_zero_of_eq hc) (Mathlib.Tactic.Linarith.sub_neg_of_lt a))));
have habs1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a = 1) (Eq.symm (abs_pow t ↑n))))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) ht1))
(of_eq_true (Eq.trans (congrArg (fun x => x = 1) abs_one) (eq_self 1))));
have hlt := one_lt_pow₀ ht (LT.lt.ne' (PNat.pos n));
False.elim
(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.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t| (↑n ^ 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.lt_of_eq_of_lt (sub_eq_zero_of_eq habs1) (Mathlib.Tactic.Linarith.sub_neg_of_lt hlt))))⊢ 1 / (t ^ ↑n - 1) = ↑↑n ^ 0 * (t ^ ↑n)⁻¹ / (1 - (t ^ ↑n)⁻¹); All goals completed! 🐙
-- RHS: `σ_0(n) · r^n = τ(n) / t^n` since `σ_0 = τ` and `r = 1/t`.
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0⊢ ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0⊢ ∀ (b : ℕ+), ↑(↑b).divisors.card / t ^ ↑b = ↑((sigma 0) ↑b) * r ^ ↑b; t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+⊢ ↑(↑n).divisors.card / t ^ ↑n = ↑((sigma 0) ↑n) * r ^ ↑n
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+hp:t ^ ↑n ≠ 0 := htn ↑n⊢ ↑(↑n).divisors.card / t ^ ↑n = ↑((sigma 0) ↑n) * r ^ ↑n
have hrn : r ^ (n : ℕ) = (t ^ (n : ℕ))⁻¹ := t:ℝht:1 < |t|⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n All goals completed! 🐙
t:ℝht:1 < |t|ht0:t ≠ 0 :=
fun h =>
Eq.ndrec (motive := fun t => 1 < |t| → False)
(fun ht =>
False.elim
(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.neg_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.neg_add
(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.sub_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(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 (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_neg (neg_neg_of_pos Mathlib.Tactic.Linarith.zero_lt_one)
(Mathlib.Tactic.Linarith.sub_neg_of_lt (Eq.mp (congrArg (LT.lt 1) abs_zero) ht))))))
(Eq.symm h) hthtn:∀ (n : ℕ), t ^ n ≠ 0 := fun n => pow_ne_zero n ht0r:ℝ := t⁻¹hr_def:r = t⁻¹ := rflhr_norm:‖r‖ < 1 :=
Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (Real.norm_eq_abs r)))
(Eq.mpr (_root_.id (congrArg (fun _a => |_a| < 1) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a < 1) (abs_inv t))) (inv_lt_one_of_one_lt₀ ht)))h:∑' (n : ℕ+), ↑↑n ^ 0 * r ^ ↑n / (1 - r ^ ↑n) = ∑' (n : ℕ+), ↑((sigma 0) ↑n) * r ^ ↑n := tsum_pow_div_one_sub_eq_tsum_sigma hr_norm 0n:ℕ+hp:t ^ ↑n ≠ 0 := htn ↑nhrn:r ^ ↑n = (t ^ ↑n)⁻¹ :=
Eq.mpr (_root_.id (congrArg (fun _a => _a ^ ↑n = (t ^ ↑n)⁻¹) hr_def))
(Eq.mpr (_root_.id (congrArg (fun _a => _a = (t ^ ↑n)⁻¹) (inv_pow t ↑n))) (Eq.refl (t ^ ↑n)⁻¹))⊢ ↑(↑n).divisors.card / t ^ ↑n = ↑(↑n).divisors.card * (t ^ ↑n)⁻¹; All goals completed! 🐙
Divergent case (|t| ≤ 1).
Both tsums equal 0 in this regime, but for different reasons in each
sub-case. We split on t ∈ {1, 0, -1} and the generic |t| < 1, t ≠ 0
remainder, and use the same key non-summability lemma below to handle
the cases where the series diverges.
t = 1: every LHS term is 1 / (1 - 1) = 0 (Lean convention), so the
LHS sum is trivially 0. RHS is Σ τ(n), non-summable.
t = 0: every RHS term is τ(n) / 0 = 0 (Lean convention), so the RHS
sum is trivially 0. LHS is Σ (-1), non-summable.
t = -1: alternating; LHS vanishes at even n but odd n give terms
of magnitude 1/2, an infinite set. RHS terms have magnitude τ(n) ≥ 1.
|t| < 1, t ≠ 0: standard; bounded denominator gives lower-bounded
reciprocal on LHS, and |t^n| ≤ 1 plus τ(n) ≥ 1 gives the RHS bound.
In every case, Lean's tsum_eq_zero_of_not_summable collapses the non-
summable side to 0, matching the 0 on the other side.
@[category API, AMS 11]
private lemma lambert_divergent (t : ℝ) (ht : |t| ≤ 1) :
∑' n : ℕ+, 1 / (t ^ (n : ℕ) - 1) =
∑' n : ℕ+, ((n : ℕ).divisors.card : ℝ) / (t ^ (n : ℕ)) := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
-- `key`: a function with infinitely many terms bounded away from zero is
-- not summable. Standard contrapositive of `Summable.tendsto_cofinite_zero`.
have key : ∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c →
Set.Infinite {n : ℕ+ | c ≤ |f n|} → ¬Summable f := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
intro f t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝ⊢ 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < c⊢ {n | c ≤ |f n|}.Infinite → ¬Summable f t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinite⊢ ¬Summable f t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinitehsum:Summable f⊢ False
t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinitehsum:Summable fh:Tendsto f cofinite (nhds 0) := Summable.tendsto_cofinite_zero hsum⊢ False
t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinitehsum:Summable fh:∀ ε > 0, ∀ᶠ (x : ℕ+) in cofinite, dist (f x) 0 < ε⊢ False
t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinitehsum:Summable fh:∀ ε > 0, ∀ᶠ (x : ℕ+) in cofinite, dist (f x) 0 < εh1:∀ᶠ (x : ℕ+) in cofinite, dist (f x) 0 < c := h c hc⊢ False
t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinitehsum:Summable fh:∀ ε > 0, ∀ᶠ (x : ℕ+) in cofinite, dist (f x) 0 < εh1:{x | ¬dist (f x) 0 < c}.Finite⊢ False
t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinitehsum:Summable fh:∀ ε > 0, ∀ᶠ (x : ℕ+) in cofinite, dist (f x) 0 < εh1:{x | ¬dist (f x) 0 < c}.Finiten:ℕ+hn:n ∈ {n | c ≤ |f n|}⊢ n ∈ {x | ¬dist (f x) 0 < c}
t:ℝht:|t| ≤ 1f:ℕ+ → ℝc:ℝhc:0 < chinf:{n | c ≤ |f n|}.Infinitehsum:Summable fh:∀ ε > 0, ∀ᶠ (x : ℕ+) in cofinite, dist (f x) 0 < εh1:{x | ¬dist (f x) 0 < c}.Finiten:ℕ+hn:n ∈ {n | c ≤ |f n|}⊢ c ≤ |f n|
All goals completed! 🐙
-- Number of divisors of `n ∈ ℕ+` is at least 1 (since `1 ∈ n.divisors`).
have hcard_pos : ∀ (n : ℕ+), (1 : ℝ) ≤ ((n : ℕ).divisors.card : ℝ) := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)n:ℕ+⊢ 1 ≤ ↑(↑n).divisors.card
have : 0 < (n : ℕ).divisors.card := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)n:ℕ+⊢ (↑n).divisors.Nonempty
All goals completed! 🐙
All goals completed! 🐙
-- Case t = 1: LHS terms are 1/0 = 0 by Lean's convention, so LHS sum = 0.
-- RHS terms are τ(n)/1 = τ(n) ≥ 1, so RHS is non-summable.
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:t = 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑nt:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:t = 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1⊢ ∑' (n : ℕ+), 1 / (1 ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / 1 ^ ↑n
have hLzero : ∀ n : ℕ+, (1 : ℝ) / ((1 : ℝ) ^ (n : ℕ) - 1) = 0 := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1n:ℕ+⊢ 1 / (1 ^ ↑n - 1) = 0; All goals completed! 🐙
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))⊢ 0 = ∑' (n : ℕ+), ↑(↑n).divisors.card / 1 ^ ↑n
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))⊢ ∑' (n : ℕ+), ↑(↑n).divisors.card / 1 ^ ↑n = 0; key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))⊢ ¬Summable fun b => ↑(↑b).divisors.card / 1 ^ ↑b
apply key _ 1 (key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))⊢ 0 < 1 All goals completed! 🐙)
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))⊢ {n | 1 ≤ |↑(↑n).divisors.card / 1 ^ ↑n|} = Set.univ
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))n:ℕ+⊢ n ∈ {n | 1 ≤ |↑(↑n).divisors.card / 1 ^ ↑n|} ↔ n ∈ Set.univ
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))n:ℕ+⊢ 1 ≤ |↑(↑n).divisors.card|
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1hLzero:∀ (n : ℕ+), 1 / (1 ^ ↑n - 1) = 0 :=
fun n =>
of_eq_true
(Eq.trans
(congrArg (fun x => x = 0)
(Eq.trans (congrArg (HDiv.hDiv 1) (Eq.trans (congrArg (fun x => x - 1) (one_pow ↑n)) (sub_self 1)))
(div_zero 1)))
(eq_self 0))n:ℕ+⊢ 1 ≤ ↑(↑n).divisors.card; All goals completed! 🐙
-- Case t = 0: RHS terms are τ(n)/0 = 0 by Lean's convention, so RHS sum = 0.
-- LHS terms are 1/(0 - 1) = -1, so LHS is non-summable.
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:t = 0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑nt:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:t = 0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1⊢ ∑' (n : ℕ+), 1 / (0 ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / 0 ^ ↑n
have hRzero : ∀ n : ℕ+, ((n : ℕ).divisors.card : ℝ) / ((0 : ℝ) ^ (n : ℕ)) = 0 := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1n:ℕ+⊢ ↑(↑n).divisors.card / 0 ^ ↑n = 0; key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1n:ℕ+⊢ ↑(↑n).divisors.card / 0 = 0; All goals completed! 🐙
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1hRzero:∀ (n : ℕ+), ↑(↑n).divisors.card / 0 ^ ↑n = 0 :=
fun n =>
Eq.mpr (_root_.id (congrArg (fun _a => ↑(↑n).divisors.card / _a = 0) (zero_pow (LT.lt.ne' (PNat.pos n)))))
(of_eq_true (Eq.trans (congrArg (fun x => x = 0) (div_zero ↑(↑n).divisors.card)) (eq_self 0)))⊢ ∑' (n : ℕ+), 1 / (0 ^ ↑n - 1) = 0
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1hRzero:∀ (n : ℕ+), ↑(↑n).divisors.card / 0 ^ ↑n = 0 :=
fun n =>
Eq.mpr (_root_.id (congrArg (fun _a => ↑(↑n).divisors.card / _a = 0) (zero_pow (LT.lt.ne' (PNat.pos n)))))
(of_eq_true (Eq.trans (congrArg (fun x => x = 0) (div_zero ↑(↑n).divisors.card)) (eq_self 0)))⊢ ¬Summable fun b => 1 / (0 ^ ↑b - 1)
apply key _ 1 (key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1hRzero:∀ (n : ℕ+), ↑(↑n).divisors.card / 0 ^ ↑n = 0 :=
fun n =>
Eq.mpr (_root_.id (congrArg (fun _a => ↑(↑n).divisors.card / _a = 0) (zero_pow (LT.lt.ne' (PNat.pos n)))))
(of_eq_true (Eq.trans (congrArg (fun x => x = 0) (div_zero ↑(↑n).divisors.card)) (eq_self 0)))⊢ 0 < 1 All goals completed! 🐙)
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1hRzero:∀ (n : ℕ+), ↑(↑n).divisors.card / 0 ^ ↑n = 0 :=
fun n =>
Eq.mpr (_root_.id (congrArg (fun _a => ↑(↑n).divisors.card / _a = 0) (zero_pow (LT.lt.ne' (PNat.pos n)))))
(of_eq_true (Eq.trans (congrArg (fun x => x = 0) (div_zero ↑(↑n).divisors.card)) (eq_self 0)))⊢ {n | 1 ≤ |1 / (0 ^ ↑n - 1)|} = Set.univ
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1hRzero:∀ (n : ℕ+), ↑(↑n).divisors.card / 0 ^ ↑n = 0 :=
fun n =>
Eq.mpr (_root_.id (congrArg (fun _a => ↑(↑n).divisors.card / _a = 0) (zero_pow (LT.lt.ne' (PNat.pos n)))))
(of_eq_true (Eq.trans (congrArg (fun x => x = 0) (div_zero ↑(↑n).divisors.card)) (eq_self 0)))n:ℕ+⊢ n ∈ {n | 1 ≤ |1 / (0 ^ ↑n - 1)|} ↔ n ∈ Set.univ
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|0| ≤ 1ht1:¬0 = 1hRzero:∀ (n : ℕ+), ↑(↑n).divisors.card / 0 ^ ↑n = 0 :=
fun n =>
Eq.mpr (_root_.id (congrArg (fun _a => ↑(↑n).divisors.card / _a = 0) (zero_pow (LT.lt.ne' (PNat.pos n)))))
(of_eq_true (Eq.trans (congrArg (fun x => x = 0) (div_zero ↑(↑n).divisors.card)) (eq_self 0)))n:ℕ+⊢ 1 ≤ |1 / -1|
All goals completed! 🐙
-- Case t = -1: alternating signs make `1/(t^n - 1)` vanish at even n but
-- equal -1/2 at odd n. The set of odd `n ∈ ℕ+` is infinite, which is enough
-- to invoke `key` on the LHS. RHS magnitude is τ(n) ≥ 1 everywhere.
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:t = -1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑nt:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:t = -1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0⊢ ∑' (n : ℕ+), 1 / ((-1) ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / (-1) ^ ↑n
-- Construct the infinite set of odd positive naturals via the injection
-- `k ↦ 2k + 1`, which lands in `ℕ+` and is always odd.
have hinf_odd : Set.Infinite {n : ℕ+ | Odd (n : ℕ)} := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0⊢ Function.Injective fun k => ⟨2 * k + 1, ⋯⟩key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0⊢ ∀ (x : ℕ), ⟨2 * x + 1, ⋯⟩ ∈ {n | Odd ↑n}
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0⊢ Function.Injective fun k => ⟨2 * k + 1, ⋯⟩ intro a key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0a:ℕb:ℕ⊢ (fun k => ⟨2 * k + 1, ⋯⟩) a = (fun k => ⟨2 * k + 1, ⋯⟩) b → a = b key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0a:ℕb:ℕhab:(fun k => ⟨2 * k + 1, ⋯⟩) a = (fun k => ⟨2 * k + 1, ⋯⟩) b⊢ a = b; key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0a:ℕb:ℕhab:2 * a + 1 = 2 * b + 1⊢ a = b; All goals completed! 🐙
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0⊢ ∀ (x : ℕ), ⟨2 * x + 1, ⋯⟩ ∈ {n | Odd ↑n} key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0k:ℕ⊢ ⟨2 * k + 1, ⋯⟩ ∈ {n | Odd ↑n}; key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0k:ℕ⊢ Odd (2 * k + 1); All goals completed! 🐙
have hL : ¬ Summable (fun n : ℕ+ => 1 / (((-1 : ℝ)) ^ (n : ℕ) - 1)) := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
apply key _ (1/2) (key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)⊢ 0 < 1 / 2 All goals completed! 🐙)
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)⊢ {n | Odd ↑n} ⊆ {n | 1 / 2 ≤ |1 / ((-1) ^ ↑n - 1)|}
intro n key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)n:ℕ+hn:n ∈ {n | Odd ↑n}⊢ n ∈ {n | 1 / 2 ≤ |1 / ((-1) ^ ↑n - 1)|}
-- For odd n: (-1)^n = -1, so 1/((-1)^n - 1) = 1/(-2), magnitude 1/2.
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)n:ℕ+hn:n ∈ {n | Odd ↑n}⊢ 1 / 2 ≤ |1 / ((-1) ^ ↑n - 1)|
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)n:ℕ+hn:n ∈ {n | Odd ↑n}⊢ 1 / 2 ≤ |1 / (-1 - 1)|; All goals completed! 🐙
have hR : ¬ Summable (fun n : ℕ+ => ((n : ℕ).divisors.card : ℝ) / ((-1 : ℝ) ^ (n : ℕ))) := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
apply key _ 1 (key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)hL:¬Summable fun n => 1 / ((-1) ^ ↑n - 1) :=
key (fun n => 1 / ((-1) ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
((fun h => Set.Infinite.mono h hinf_odd) fun ⦃n⦄ hn =>
_root_.id
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ |1 / (_a - 1)|) (Odd.neg_one_pow hn)))
(Mathlib.Meta.NormNum.isRat_le_true
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2))))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_abs_neg
(Mathlib.Meta.NormNum.isRat_div
(Mathlib.Meta.NormNum.isRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)))
(Mathlib.Meta.NormNum.isRat_inv_neg
(Mathlib.Meta.NormNum.IsInt.to_isRat
(Mathlib.Meta.NormNum.isInt_sub (Eq.refl HSub.hSub)
(Mathlib.Meta.NormNum.isInt_neg (Eq.refl Neg.neg)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 1)))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 2)))))
(Eq.refl ((Int.ofNat 1).mul (Int.negOfNat 1))) (Eq.refl 2)))))
(Eq.refl true))))⊢ 0 < 1 All goals completed! 🐙)
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)hL:¬Summable fun n => 1 / ((-1) ^ ↑n - 1) :=
key (fun n => 1 / ((-1) ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
((fun h => Set.Infinite.mono h hinf_odd) fun ⦃n⦄ hn =>
_root_.id
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ |1 / (_a - 1)|) (Odd.neg_one_pow hn)))
(Mathlib.Meta.NormNum.isRat_le_true
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2))))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_abs_neg
(Mathlib.Meta.NormNum.isRat_div
(Mathlib.Meta.NormNum.isRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)))
(Mathlib.Meta.NormNum.isRat_inv_neg
(Mathlib.Meta.NormNum.IsInt.to_isRat
(Mathlib.Meta.NormNum.isInt_sub (Eq.refl HSub.hSub)
(Mathlib.Meta.NormNum.isInt_neg (Eq.refl Neg.neg)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 1)))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 2)))))
(Eq.refl ((Int.ofNat 1).mul (Int.negOfNat 1))) (Eq.refl 2)))))
(Eq.refl true))))⊢ {n | 1 ≤ |↑(↑n).divisors.card / (-1) ^ ↑n|} = Set.univ
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)hL:¬Summable fun n => 1 / ((-1) ^ ↑n - 1) :=
key (fun n => 1 / ((-1) ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
((fun h => Set.Infinite.mono h hinf_odd) fun ⦃n⦄ hn =>
_root_.id
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ |1 / (_a - 1)|) (Odd.neg_one_pow hn)))
(Mathlib.Meta.NormNum.isRat_le_true
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2))))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_abs_neg
(Mathlib.Meta.NormNum.isRat_div
(Mathlib.Meta.NormNum.isRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)))
(Mathlib.Meta.NormNum.isRat_inv_neg
(Mathlib.Meta.NormNum.IsInt.to_isRat
(Mathlib.Meta.NormNum.isInt_sub (Eq.refl HSub.hSub)
(Mathlib.Meta.NormNum.isInt_neg (Eq.refl Neg.neg)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 1)))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 2)))))
(Eq.refl ((Int.ofNat 1).mul (Int.negOfNat 1))) (Eq.refl 2)))))
(Eq.refl true))))n:ℕ+⊢ n ∈ {n | 1 ≤ |↑(↑n).divisors.card / (-1) ^ ↑n|} ↔ n ∈ Set.univ
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)hL:¬Summable fun n => 1 / ((-1) ^ ↑n - 1) :=
key (fun n => 1 / ((-1) ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
((fun h => Set.Infinite.mono h hinf_odd) fun ⦃n⦄ hn =>
_root_.id
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ |1 / (_a - 1)|) (Odd.neg_one_pow hn)))
(Mathlib.Meta.NormNum.isRat_le_true
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2))))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_abs_neg
(Mathlib.Meta.NormNum.isRat_div
(Mathlib.Meta.NormNum.isRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)))
(Mathlib.Meta.NormNum.isRat_inv_neg
(Mathlib.Meta.NormNum.IsInt.to_isRat
(Mathlib.Meta.NormNum.isInt_sub (Eq.refl HSub.hSub)
(Mathlib.Meta.NormNum.isInt_neg (Eq.refl Neg.neg)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 1)))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 2)))))
(Eq.refl ((Int.ofNat 1).mul (Int.negOfNat 1))) (Eq.refl 2)))))
(Eq.refl true))))n:ℕ+⊢ 1 ≤ |↑(↑n).divisors.card / (-1) ^ ↑n|
-- |(-1)^n| = 1, so |τ(n) / (-1)^n| = τ(n) ≥ 1.
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)hL:¬Summable fun n => 1 / ((-1) ^ ↑n - 1) :=
key (fun n => 1 / ((-1) ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
((fun h => Set.Infinite.mono h hinf_odd) fun ⦃n⦄ hn =>
_root_.id
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ |1 / (_a - 1)|) (Odd.neg_one_pow hn)))
(Mathlib.Meta.NormNum.isRat_le_true
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2))))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_abs_neg
(Mathlib.Meta.NormNum.isRat_div
(Mathlib.Meta.NormNum.isRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)))
(Mathlib.Meta.NormNum.isRat_inv_neg
(Mathlib.Meta.NormNum.IsInt.to_isRat
(Mathlib.Meta.NormNum.isInt_sub (Eq.refl HSub.hSub)
(Mathlib.Meta.NormNum.isInt_neg (Eq.refl Neg.neg)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 1)))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 2)))))
(Eq.refl ((Int.ofNat 1).mul (Int.negOfNat 1))) (Eq.refl 2)))))
(Eq.refl true))))n:ℕ+⊢ 1 ≤ |↑(↑n).divisors.card|
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0hinf_odd:{n | Odd ↑n}.Infinite :=
Set.infinite_of_injective_forall_mem
(fun ⦃a b⦄ hab =>
Decidable.byContradiction fun a_1 =>
lambert_divergent._proof_3
(Eq.mp
(congrArg (fun _a => _a)
(Subtype.mk.injEq (2 * a + 1) (Nat.succ_pos (2 * a)) (2 * b + 1) (Nat.succ_pos (2 * b))))
hab)
a_1)
fun k => _root_.id (Exists.intro k rfl)hL:¬Summable fun n => 1 / ((-1) ^ ↑n - 1) :=
key (fun n => 1 / ((-1) ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
((fun h => Set.Infinite.mono h hinf_odd) fun ⦃n⦄ hn =>
_root_.id
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ |1 / (_a - 1)|) (Odd.neg_one_pow hn)))
(Mathlib.Meta.NormNum.isRat_le_true
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2))))
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.isNNRat_abs_neg
(Mathlib.Meta.NormNum.isRat_div
(Mathlib.Meta.NormNum.isRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNNRat.to_isRat
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)))
(Mathlib.Meta.NormNum.isRat_inv_neg
(Mathlib.Meta.NormNum.IsInt.to_isRat
(Mathlib.Meta.NormNum.isInt_sub (Eq.refl HSub.hSub)
(Mathlib.Meta.NormNum.isInt_neg (Eq.refl Neg.neg)
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 1)))
(Mathlib.Meta.NormNum.IsNat.to_isInt (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Eq.refl (Int.negOfNat 2)))))
(Eq.refl ((Int.ofNat 1).mul (Int.negOfNat 1))) (Eq.refl 2)))))
(Eq.refl true))))n:ℕ+⊢ 1 ≤ ↑(↑n).divisors.card
All goals completed! 🐙
All goals completed! 🐙
-- Remaining case: |t| ≤ 1 with t ∉ {1, 0, -1}, equivalently |t| < 1 and t ≠ 0.
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n -- First narrow `|t| ≤ 1` to `|t| < 1` using the case exclusions.
have habs_lt : |t| < 1 := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1h:|t| < 1⊢ |t| < 1t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1h:|t| = 1⊢ |t| < 1
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1h:|t| < 1⊢ |t| < 1 All goals completed! 🐙
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1h:|t| = 1⊢ |t| < 1 t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1h:|t| = 1⊢ False
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1ht1:¬1 = 1ht0:¬1 = 0htneg1:¬1 = -1h:|1| = 1⊢ Falsekey:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0htneg1:¬-1 = -1h:|(-1)| = 1⊢ False
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|1| ≤ 1ht1:¬1 = 1ht0:¬1 = 0htneg1:¬1 = -1h:|1| = 1⊢ False All goals completed! 🐙
key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht:|(-1)| ≤ 1ht1:¬-1 = 1ht0:¬-1 = 0htneg1:¬-1 = -1h:|(-1)| = 1⊢ False All goals completed! 🐙
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
-- Since `|t| < 1`, `|t^n| ≤ 1` for all `n ∈ ℕ+`.
have hbound : ∀ (n : ℕ+), |t ^ (n : ℕ)| ≤ 1 := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0n:ℕ+⊢ |t ^ ↑n| ≤ 1; t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0n:ℕ+⊢ |t| ^ ↑n ≤ 1; All goals completed! 🐙
-- Since `|t| < 1` strictly, `t^n ≠ 1` (else `|t|^n = 1` but `|t|^n ≤ |t| < 1`).
have htn_ne_one : ∀ (n : ℕ+), t ^ (n : ℕ) ≠ 1 := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
intro n t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))n:ℕ+hn:t ^ ↑n = 1⊢ False
have h1 : |t ^ (n : ℕ)| = 1 := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))n:ℕ+hn:t ^ ↑n = 1⊢ |1| = 1; All goals completed! 🐙
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))n:ℕ+hn:t ^ ↑n = 1h1:|t| ^ ↑n = 1⊢ False
have hle : |t| ^ (n : ℕ) ≤ |t| := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
All goals completed! 🐙
All goals completed! 🐙
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
-- LHS: `|t^n - 1| ≤ |t^n| + 1 ≤ 2`, so `|1 / (t^n - 1)| ≥ 1/2` everywhere.
have hL : ¬ Summable (fun n : ℕ+ => 1 / (t ^ (n : ℕ) - 1)) := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
apply key _ (1/2) (t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0⊢ 0 < 1 / 2 All goals completed! 🐙)
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0⊢ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} = Set.univ
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+⊢ n ∈ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} ↔ n ∈ Set.univ
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+⊢ 1 / 2 ≤ |1 / (t ^ ↑n - 1)|
have hden_bound : |t ^ (n : ℕ) - 1| ≤ 2 := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
calc |t ^ (n : ℕ) - 1| ≤ |t ^ (n : ℕ)| + |(1 : ℝ)| := abs_sub _ _
_ ≤ 1 + 1 := t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+⊢ |t ^ ↑n| + |1| ≤ 1 + 1 t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+this:|t ^ ↑n| ≤ 1 := hbound n⊢ |t ^ ↑n| + |1| ≤ 1 + 1; t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+this:|t ^ ↑n| ≤ 1 := hbound n⊢ |t ^ ↑n| + 1 ≤ 1 + 1; All goals completed! 🐙
_ = 2 := t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+⊢ 1 + 1 = 2 All goals completed! 🐙
have hden_pos : 0 < |t ^ (n : ℕ) - 1| := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+hden_bound:|t ^ ↑n - 1| ≤ 2 :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))⊢ t ^ ↑n ≠ 1; All goals completed! 🐙
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0n:ℕ+hden_bound:|t ^ ↑n - 1| ≤ 2 :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero (|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))hden_pos:0 < |t ^ ↑n - 1| :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n))⊢ 1 / 2 * |t ^ ↑n - 1| ≤ 1; All goals completed! 🐙
-- RHS: `|τ(n) / t^n| = τ(n) / |t^n| ≥ τ(n) ≥ 1` since `|t^n| ≤ 1`.
have hR : ¬ Summable (fun n : ℕ+ => ((n : ℕ).divisors.card : ℝ) / (t ^ (n : ℕ))) := t:ℝht:|t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / t ^ ↑n
apply key _ 1 (t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)⊢ 0 < 1 All goals completed! 🐙)
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)⊢ {n | 1 ≤ |↑(↑n).divisors.card / t ^ ↑n|} = Set.univ
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)n:ℕ+⊢ n ∈ {n | 1 ≤ |↑(↑n).divisors.card / t ^ ↑n|} ↔ n ∈ Set.univ
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)n:ℕ+⊢ 1 ≤ |↑(↑n).divisors.card / t ^ ↑n|
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)n:ℕ+⊢ 1 * |t ^ ↑n| ≤ |↑(↑n).divisors.card|
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)n:ℕ+⊢ 1 * |t ^ ↑n| ≤ ↑(↑n).divisors.card
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)n:ℕ+this:|t ^ ↑n| ≤ 1 := hbound n⊢ 1 * |t ^ ↑n| ≤ ↑(↑n).divisors.card
t:ℝht:|t| ≤ 1key:∀ (f : ℕ+ → ℝ) (c : ℝ), 0 < c → {n | c ≤ |f n|}.Infinite → ¬Summable f :=
fun f c hc hinf hsum =>
have h := Summable.tendsto_cofinite_zero hsum;
have h1 := Eq.mp (congrArg (fun _a => _a) (propext Metric.tendsto_nhds)) h c hc;
hinf
(Set.Finite.subset (Eq.mp (congrArg (fun _a => _a) (propext eventually_cofinite)) h1) fun n hn =>
Eq.mpr
(_root_.id
(congrArg (fun x => n ∈ setOf x)
(funext fun x => Eq.trans (congrArg (fun x => ¬|x| < c) (sub_zero (f x))) lambert_divergent._simp_1)))
hn)hcard_pos:∀ (n : ℕ+), 1 ≤ ↑(↑n).divisors.card :=
fun n =>
have this := Finset.card_pos.mpr (Exists.intro 1 (Nat.one_mem_divisors.mpr (LT.lt.ne' n.property)));
cast (Eq.symm (Eq.trans (congrArg (fun x => x ≤ ↑(↑n).divisors.card) (Eq.symm Nat.cast_one)) Nat.cast_le._simp_1))
thisht1:¬t = 1ht0:¬t = 0htneg1:¬t = -1habs_lt:|t| < 1 :=
Or.casesOn (lt_or_eq_of_le ht) (fun h => h) fun h =>
False.elim
(Or.casesOn ((abs_eq zero_le_one).mp h)
(fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => ht1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)
fun h_1 =>
Eq.ndrec (motive := fun t => |t| ≤ 1 → ¬t = 1 → ¬t = 0 → ¬t = -1 → |t| = 1 → False)
(fun ht ht1 ht0 htneg1 h => htneg1 rfl) (Eq.symm h_1) ht ht1 ht0 htneg1 h)habs_pos:0 < |t| := abs_pos.mpr ht0hbound:∀ (n : ℕ+), |t ^ ↑n| ≤ 1 := fun n => Eq.mpr (_root_.id (congrArg (fun _a => _a ≤ 1) (abs_pow t ↑n))) (pow_le_one₀ (abs_nonneg t) (le_of_lt habs_lt))htn_ne_one:∀ (n : ℕ+), t ^ ↑n ≠ 1 :=
fun n hn =>
have h1 := Eq.mpr (_root_.id (congrArg (fun _a => |_a| = 1) hn)) abs_one;
have hle := pow_le_of_le_one (abs_nonneg t) (le_of_lt habs_lt) (LT.lt.ne' (PNat.pos n));
False.elim
(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.add_congr
(Mathlib.Tactic.Ring.sub_congr (Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_congr
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.neg_add
(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_add
(Mathlib.Tactic.Ring.neg_mul |t| (↑n ^ 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_zero)))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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_lt (|t| ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf |t|) (Mathlib.Tactic.Ring.atom_pf ↑n)
(Mathlib.Tactic.Ring.pow_add
(Mathlib.Tactic.Ring.single_pow
(Mathlib.Tactic.Ring.mul_pow
(Mathlib.Tactic.Ring.mul_pf_right (↑n) (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.one_pow (↑n ^ Nat.rawCast 1 * Nat.rawCast 1))))
(Mathlib.Tactic.Ring.pow_zero (|t| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_left |t| (↑n ^ Nat.rawCast 1 * Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ 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
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.atom_pf |t|)
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t| (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 (|t| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t| ^ (↑n ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t| (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 |t| (↑n ^ 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_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.lt_of_lt_of_eq (Mathlib.Tactic.Linarith.sub_neg_of_lt habs_lt)
(neg_eq_zero.mpr (sub_eq_zero_of_eq (Eq.mp (congrArg (fun _a => _a = 1) (abs_pow t ↑n)) h1))))
(Mathlib.Tactic.Linarith.sub_nonpos_of_le hle))))htn_ne_zero:∀ (n : ℕ+), t ^ ↑n ≠ 0 := fun n => pow_ne_zero (↑n) ht0hL:¬Summable fun n => 1 / (t ^ ↑n - 1) :=
key (fun n => 1 / (t ^ ↑n - 1)) (1 / 2)
(Mathlib.Meta.NormNum.isNNRat_lt_true
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero))
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
(Eq.refl true))
(Eq.mpr
(eq_of_heq
((fun α s s' e'_2 =>
Eq.casesOn (motive := fun a x => s' = a → e'_2 ≍ x → s.Infinite ≍ s'.Infinite) e'_2
(fun h =>
Eq.ndrec (motive := fun s' => ∀ (e_2 : s = s'), e_2 ≍ Eq.refl s → s.Infinite ≍ s'.Infinite)
(fun e_2 h => HEq.refl s.Infinite) (Eq.symm h) e'_2)
(Eq.refl s') (HEq.refl e'_2))
ℕ+ {n | 1 / 2 ≤ |1 / (t ^ ↑n - 1)|} Set.univ
(Set.ext fun n =>
Eq.mpr
(_root_.id
(Eq.trans (congrArg (Iff (1 / 2 ≤ |1 / (t ^ ↑n - 1)|)) (lambert_divergent._simp_2 n))
(iff_true (1 / 2 ≤ |1 / (t ^ ↑n - 1)|))))
(have hden_bound :=
Trans.trans
(Trans.trans (abs_sub (t ^ ↑n) 1)
(have this := hbound n;
Eq.mpr (_root_.id (congrArg (fun _a => |t ^ ↑n| + _a ≤ 1 + 1) abs_one))
(le_of_not_gt 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 |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 (Int.negOfNat 1).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.add_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_overlap
(Mathlib.Meta.NormNum.IsNat.to_raw_eq
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1)
(Mathlib.Meta.NormNum.IsNat.of_raw ℝ 1) (Eq.refl 2)))
(Mathlib.Tactic.Ring.add_pf_zero_add 0)))
(Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf |t ^ ↑n|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1)
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 |t ^ ↑n| (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_overlap
(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_zero_add
(|t ^ ↑n| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(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 |t ^ ↑n| (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))))))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_add (Eq.refl HAdd.hAdd) (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)));
have hden_pos :=
Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext abs_pos)))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext sub_ne_zero))) (htn_ne_one n));
Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a) (abs_div 1 (t ^ ↑n - 1))))
(Eq.mpr (_root_.id (congrArg (fun _a => 1 / 2 ≤ _a / |t ^ ↑n - 1|) abs_one))
(Eq.mpr (_root_.id (congrArg (fun _a => _a) (propext (le_div_iff₀ hden_pos))))
(le_of_not_gt 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 |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(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 ℝ 2))
(Eq.refl (Int.negOfNat 2)))))
Mathlib.Tactic.Ring.neg_zero)
(Mathlib.Tactic.Ring.add_pf_add_gt (Int.negOfNat 2).rawCast
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))))
(Mathlib.Tactic.Ring.sub_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_one (Nat.rawCast 2))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 2))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 2 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero (Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.mul_congr
(Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Tactic.Ring.atom_pf |t ^ ↑n - 1|)
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.add_mul
(Mathlib.Tactic.Ring.mul_add
(Mathlib.Tactic.Ring.mul_pf_right |t ^ ↑n - 1| (Nat.rawCast 1)
(Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))
(Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))
(Mathlib.Tactic.Ring.zero_mul (|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))
(Mathlib.Tactic.Ring.add_pf_add_zero
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * Nat.rawCast 1 + 0))))
(Mathlib.Tactic.Ring.sub_pf
(Mathlib.Tactic.Ring.neg_add
(Mathlib.Tactic.Ring.neg_mul |t ^ ↑n - 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_zero)
(Mathlib.Tactic.Ring.add_pf_add_lt (Nat.rawCast 2)
(Mathlib.Tactic.Ring.add_pf_zero_add
(|t ^ ↑n - 1| ^ Nat.rawCast 1 * (Int.negOfNat 1).rawCast + 0)))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Meta.NormNum.IsInt.to_isNat
(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 ℝ 2))
(Eq.refl (Int.ofNat 0))))
(Mathlib.Tactic.Ring.add_pf_add_overlap_zero
(Mathlib.Tactic.Ring.add_overlap_pf_zero |t ^ ↑n - 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 hden_bound)
(Eq.mp
(congrArg (fun _a => _a < 0)
(CancelDenoms.derive_trans
(Eq.trans
(congrArg (HSub.hSub 1)
(Eq.trans
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))
(congrArg (fun x => x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2)))))
(congrArg (fun x => 1 - x * |t ^ ↑n - 1|)
(Mathlib.Meta.NormNum.IsNNRat.to_eq
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 1 1)) (Eq.refl 2)))
Nat.cast_one (Eq.refl 2))))
(CancelDenoms.sub_subst rfl
(CancelDenoms.mul_subst
(CancelDenoms.div_subst rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_div
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.IsNNRat.to_isNat
(Mathlib.Meta.NormNum.isNNRat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))
(Mathlib.Meta.NormNum.isNNRat_inv_pos
(Mathlib.Meta.NormNum.IsNat.to_isNNRat
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
(Eq.refl (Nat.mul 2 1)) (Eq.refl 2))))))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one))
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))))
rfl
(Mathlib.Meta.NormNum.isNat_eq_true
(Mathlib.Meta.NormNum.isNat_mul (Eq.refl HMul.hMul)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_one) (Eq.refl 2))
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)))))))
(Mathlib.Tactic.Linarith.mul_neg (Mathlib.Tactic.Linarith.sub_neg_of_lt a)
(Mathlib.Meta.NormNum.isNat_lt_true (Mathlib.Meta.NormNum.isNat_ofNat ℝ Nat.cast_zero)
(Mathlib.Meta.NormNum.isNat_ofNat ℝ (Eq.refl 2)) (Eq.refl false)))))))))))))
Set.infinite_univ)n:ℕ+this✝:|t ^ ↑n| ≤ 1 := hbound nthis:1 ≤ ↑(↑n).divisors.card := hcard_pos n⊢ 1 * |t ^ ↑n| ≤ ↑(↑n).divisors.card
All goals completed! 🐙
All goals completed! 🐙
The classical Lambert series identity: $\sum_{n=1}^\infty \frac{1}{t^n - 1} = \sum_{n=1}^\infty \frac{\tau(n)}{t^n}$, where $\tau(n)$ counts the divisors of $n$.
@[category textbook, AMS 11]
theorem lambert_series_eq_num_divisor_sum : ∀ t : ℚ,
∑' n : ℕ+, 1 / ((t : ℝ) ^ (n : ℕ) - 1) =
∑' n : ℕ+, (n : ℕ).divisors.card / ((t : ℝ) ^ (n : ℕ)) := ⊢ ∀ (t : ℚ), ∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / ↑t ^ ↑n
t:ℚ⊢ ∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / ↑t ^ ↑n
t:ℚht:1 < |↑t|⊢ ∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / ↑t ^ ↑nt:ℚht:¬1 < |↑t|⊢ ∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / ↑t ^ ↑n
t:ℚht:1 < |↑t|⊢ ∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / ↑t ^ ↑n All goals completed! 🐙
t:ℚht:¬1 < |↑t|⊢ ∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / ↑t ^ ↑n t:ℚht:|↑t| ≤ 1⊢ ∑' (n : ℕ+), 1 / (↑t ^ ↑n - 1) = ∑' (n : ℕ+), ↑(↑n).divisors.card / ↑t ^ ↑n
All goals completed! 🐙
end Erdos1049