Theorem: isCauSeq_geo_series
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [h, lt_irrefl] at hx1
state_before: α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
h : abv x = 1
⊢ False

tactic: simp only [abv_pow abv, geom_sum_eq hx1']
state_before: α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
⊢ IsCauSeq abs' fun m => ∑ n in range m, abv (x ^ n)

tactic: conv in _ / _ => rw [← neg_div_neg_eq, neg_sub, neg_sub]
state_before: α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
⊢ IsCauSeq abs' fun m => (abv x ^ m - 1) / (abv x - 1)

tactic: have : 0 < 1 - abv x := sub_pos.2 hx1
state_before: α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
⊢ IsCauSeq abs' fun m => (1 - abv x ^ m) / (1 - abv x)

tactic: refine' @isCauSeq_of_mono_bounded _ _ _ _ ((1 : α) / (1 - abv x)) 0 _ _
state_before: α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
⊢ IsCauSeq abs' fun m => (1 - abv x ^ m) / (1 - abv x)

tactic: intro n _
state_before: case refine'_1
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
⊢ ∀ (n : ℕ), n ≥ 0 → abs' ((1 - abv x ^ n) / (1 - abv x)) ≤ 1 / (1 - abv x)

tactic: rw [abs_of_nonneg]
state_before: case refine'_1
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ abs' ((1 - abv x ^ n) / (1 - abv x)) ≤ 1 / (1 - abv x)

tactic: gcongr
state_before: case refine'_1
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ (1 - abv x ^ n) / (1 - abv x) ≤ 1 / (1 - abv x)

case refine'_1
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ 0 ≤ (1 - abv x ^ n) / (1 - abv x)

tactic: refine' div_nonneg (sub_nonneg.2 _) (sub_nonneg.2 <| le_of_lt hx1)
state_before: case refine'_1
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ 0 ≤ (1 - abv x ^ n) / (1 - abv x)

tactic: exact pow_le_one _ (by positivity) hx1.le
state_before: case refine'_1
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ abv x ^ n ≤ 1

tactic: exact sub_le_self _ (abv_pow abv x n ▸ abv_nonneg _ _)
state_before: case refine'_1.h
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ 1 - abv x ^ n ≤ 1

tactic: positivity
state_before: α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ 0 ≤ abv x

tactic: intro n _
state_before: case refine'_2
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
⊢ ∀ (n : ℕ), n ≥ 0 → (1 - abv x ^ n) / (1 - abv x) ≤ (1 - abv x ^ Nat.succ n) / (1 - abv x)

tactic: rw [←one_mul (abv x ^ n), pow_succ]
state_before: case refine'_2
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ (1 - abv x ^ n) / (1 - abv x) ≤ (1 - abv x ^ Nat.succ n) / (1 - abv x)

tactic: gcongr
state_before: case refine'_2
α : Type u_2
inst✝⁴ : LinearOrderedField α
inst✝³ : Archimedean α
β : Type u_1
inst✝² : Ring β
inst✝¹ : Nontrivial β
abv : β → α
inst✝ : IsAbsoluteValue abv
x : β
hx1 : abv x < 1
hx1' : abv x ≠ 1
this : 0 < 1 - abv x
n : ℕ
a✝ : n ≥ 0
⊢ (1 - 1 * abv x ^ n) / (1 - abv x) ≤ (1 - abv x * abv x ^ n) / (1 - abv x)