awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
hg : IsCauSeq.{u_1, u_1} (α := α) abs fun (n : ℕ) ↦ ∑ i ∈ range n, a i
ε : α
ε0 : ε > 0
i : ℕ
hi :
  ∀ j ≥ i,
    |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) j) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| <
      ε / 2
j : ℕ
ji : j ≥ max n i
hi₁ :
  |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) j) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| < ε / 2
hi₂ :
  |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) (max n i))
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| <
    ε / 2
sub_le :
  |HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range (max n i), a k)| ≤
    |HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range i, a k)| +
      |HSub.hSub (α := α) (∑ k ∈ range i, a k) (∑ k ∈ range (max n i), a k)|
this :
  |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) j) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| +
      |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i) (∑ k ∈ range (max n i), a k)| <
    ε
refine :
  abv
      (HSub.hSub (α := β) ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) j)
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (max n i))) ≤
    HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range (max n i), a k)
⊢ abv
      (HSub.hSub (α := β) ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) j)
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (max n i))) <
    ε

Tactic:
refine lt_of_le_of_lt (le_trans (le_trans ?_ (le_abs_self _)) sub_le) this

Premises used: lt_of_le_of_lt, le_abs_self, le_trans
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
hg : IsCauSeq.{u_1, u_1} (α := α) abs fun (n : ℕ) ↦ ∑ i ∈ range n, a i
ε : α
ε0 : ε > 0
i : ℕ
hi :
  ∀ j ≥ i,
    |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) j) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| <
      ε / 2
j : ℕ
ji : j ≥ max n i
hi₁ :
  |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) j) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| < ε / 2
hi₂ :
  |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) (max n i))
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| <
    ε / 2
sub_le :
  |HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range (max n i), a k)| ≤
    |HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range i, a k)| +
      |HSub.hSub (α := α) (∑ k ∈ range i, a k) (∑ k ∈ range (max n i), a k)|
this :
  |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) j) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i)| +
      |HSub.hSub (α := α) ((fun (n : ℕ) ↦ (∑ i ∈ range n, a i : α)) i) (∑ k ∈ range (max n i), a k)| <
    ε
generalize :
  ∀ (k : ℕ) (hk : j - max n i = k),
    abv
        (HSub.hSub (α := β) ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) j)
          ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (max n i))) ≤
      HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range (max n i), a k)
⊢ abv
      (HSub.hSub (α := β) ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) j)
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (max n i))) ≤
    HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range (max n i), a k)

Tactic:
generalize hk : j - max n i = k

Premises used: Max.max
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i j : ℕ
ji : j ≥ max n i
k : ℕ
hk : j - max n i = k
⊢ j = k + max n i

Tactic:
rw [tsub_eq_iff_eq_add_of_le ji] at hk

Premises used: tsub_eq_iff_eq_add_of_le
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i j : ℕ
ji : j ≥ max n i
k : ℕ
hk : j = k + max n i
rw :
  abv
      (HSub.hSub (α := β) ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (k + max n i))
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (max n i))) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)
⊢ abv
      (HSub.hSub (α := β) ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) j)
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (max n i))) ≤
    HSub.hSub (α := α) (∑ k ∈ range j, a k) (∑ k ∈ range (max n i), a k)

Tactic:
rw [hk]
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i j : ℕ
ji : j ≥ max n i
k : ℕ
hk : j = k + max n i
dsimp :
  abv (HSub.hSub (α := β) (∑ i ∈ range (k + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)
⊢ abv
      (HSub.hSub (α := β) ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (k + max n i))
        ((fun (n : ℕ) ↦ (∑ i ∈ range n, f i : β)) (max n i))) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)

Tactic:
dsimp only
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i : ℕ
⊢ abv (HSub.hSub (α := β) (∑ i ∈ range (0 + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (0 + max n i), a k) (∑ k ∈ range (max n i), a k)

Tactic:
simp [abv_zero abv]

Premises used: IsAbsoluteValue.abv_zero
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i k : ℕ
hi :
  abv (HSub.hSub (α := β) (∑ i ∈ range (k + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)
succ :
  abv (f (k + max n i) + ∑ x ∈ range (k + max n i), f x - ∑ x ∈ range (max n i), f x) ≤
    a (k + max n i) + ∑ x ∈ range (k + max n i), a x - ∑ x ∈ range (max n i), a x
⊢ abv (HSub.hSub (α := β) (∑ i ∈ range (k + 1 + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + 1 + max n i), a k) (∑ k ∈ range (max n i), a k)

Tactic:
simp only [Nat.succ_add, Nat.succ_eq_add_one, Finset.sum_range_succ_comm]

Premises used: Nat.succ_eq_add_one, Finset.sum_range_succ_comm, Nat.succ_add
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i k : ℕ
hi :
  abv (HSub.hSub (α := β) (∑ i ∈ range (k + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)
succ :
  abv (f (k + max n i) + HAdd.hAdd (α := β) (∑ x ∈ range (k + max n i), f x) (-∑ x ∈ range (max n i), f x)) ≤
    a (k + max n i) + HAdd.hAdd (α := α) (∑ x ∈ range (k + max n i), a x) (-∑ x ∈ range (max n i), a x)
⊢ abv (f (k + max n i) + ∑ x ∈ range (k + max n i), f x - ∑ x ∈ range (max n i), f x) ≤
    a (k + max n i) + ∑ x ∈ range (k + max n i), a x - ∑ x ∈ range (max n i), a x

Tactic:
simp only [add_assoc, sub_eq_add_neg]

Premises used: add_assoc, sub_eq_add_neg
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i k : ℕ
hi :
  abv (HSub.hSub (α := β) (∑ i ∈ range (k + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)
⊢ abv (HAdd.hAdd (α := β) (∑ i ∈ range (k + max n i), f i) (-∑ i ∈ range (max n i), f i)) ≤
    HAdd.hAdd (α := α) (∑ k ∈ range (k + max n i), a k) (-∑ k ∈ range (max n i), a k)

Tactic:
simp only [sub_eq_add_neg] at hi

Premises used: sub_eq_add_neg
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i k : ℕ
hi :
  abv (HAdd.hAdd (α := β) (∑ i ∈ range (k + max n i), f i) (-∑ i ∈ range (max n i), f i)) ≤
    HAdd.hAdd (α := α) (∑ k ∈ range (k + max n i), a k) (-∑ k ∈ range (max n i), a k)
⊢ n ≤ k + max n i

Tactic:
omega
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i k : ℕ
hi :
  abv (HAdd.hAdd (α := β) (∑ i ∈ range (k + max n i), f i) (-∑ i ∈ range (max n i), f i)) ≤
    HAdd.hAdd (α := α) (∑ k ∈ range (k + max n i), a k) (-∑ k ∈ range (max n i), a k)
succ :
  abv (f (k + max n i)) + abv (HAdd.hAdd (α := β) (∑ x ∈ range (k + max n i), f x) (-∑ x ∈ range (max n i), f x)) ≤
    a (k + max n i) + HAdd.hAdd (α := α) (∑ x ∈ range (k + max n i), a x) (-∑ x ∈ range (max n i), a x)
succ₁ :
  a (k + max n i) + abv (HAdd.hAdd (α := β) (∑ x ∈ range (k + max n i), f x) (-∑ x ∈ range (max n i), f x)) ≤
    a (k + max n i) + HAdd.hAdd (α := α) (∑ x ∈ range (k + max n i), a x) (-∑ x ∈ range (max n i), a x)
succ₂ succ₃ :
  a (k + max n i) + HAdd.hAdd (α := α) (∑ k ∈ range (k + max n i), a k) (-∑ k ∈ range (max n i), a k) ≤
    a (k + max n i) + HAdd.hAdd (α := α) (∑ k ∈ range (k + max n i), a k) (-∑ k ∈ range (max n i), a k)
⊢ abv (f (k + max n i) + HAdd.hAdd (α := β) (∑ x ∈ range (k + max n i), f x) (-∑ x ∈ range (max n i), f x)) ≤
    a (k + max n i) + HAdd.hAdd (α := α) (∑ x ∈ range (k + max n i), a x) (-∑ x ∈ range (max n i), a x)

Tactic:
grw [abv_add abv, hm _ (by omega), hi]

Premises used: IsAbsoluteValue.abv_add
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
a : ℕ → α
n : ℕ
hm : ∀ (m : ℕ), n ≤ m → abv (f m) ≤ a m
i k : ℕ
zero :
  abv (HSub.hSub (α := β) (∑ i ∈ range (0 + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (0 + max n i), a k) (∑ k ∈ range (max n i), a k)
succ :
  ∀ (k : ℕ)
    (hi :
      abv (HSub.hSub (α := β) (∑ i ∈ range (k + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
        HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)),
    abv (HSub.hSub (α := β) (∑ i ∈ range (k + 1 + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
      HSub.hSub (α := α) (∑ k ∈ range (k + 1 + max n i), a k) (∑ k ∈ range (max n i), a k)
⊢ abv (HSub.hSub (α := β) (∑ i ∈ range (k + max n i), f i) (∑ i ∈ range (max n i), f i)) ≤
    HSub.hSub (α := α) (∑ k ∈ range (k + max n i), a k) (∑ k ∈ range (max n i), a k)

Tactic:
induction k with
  | zero => simp [abv_zero abv]
  | succ k hi =>
    simp only [Nat.succ_add, Nat.succ_eq_add_one, Finset.sum_range_succ_comm]
    simp only [add_assoc, sub_eq_add_neg]
    simp only [sub_eq_add_neg] at hi
    grw [abv_add abv, hm _ (by omega), hi]

Premises used: Nat.succ_eq_add_one, add_assoc, sub_eq_add_neg, Finset.sum_range_succ_comm, IsAbsoluteValue.abv_zero, IsAbsoluteValue.abv_add, Nat.succ_add
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f : ℕ → β
hf : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
⊢ IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, f n

Tactic:
hf.of_abv_le 0 fun _ _ ↦ le_rfl

Premises used: le_rfl, IsCauSeq.of_abv_le, OfNat.ofNat
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
let :
  ∀ (P : α) (hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P),
    ∃ (i : ℕ),
      ∀ j ≥ i,
        abv
            (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
              ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
          ε
⊢ ∃ (i : ℕ),
    ∀ j ≥ i,
      abv
          (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
            ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
        ε

Tactic:
let ⟨P, hP⟩ := ha.bounded
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
let :
  ∀ (Q : α) (hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q),
    ∃ (i : ℕ),
      ∀ j ≥ i,
        abv
            (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
              ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
          ε
⊢ ∃ (i : ℕ),
    ∀ j ≥ i,
      abv
          (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
            ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
        ε

Tactic:
let ⟨Q, hQ⟩ := hb.bounded
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
⊢ 0 < P

Tactic:
have hP0 : 0 < P := lt_of_le_of_lt (abs_nonneg _) (hP 0)
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
⊢ GT.gt.{u_1} (α := α) 2 0

Tactic:
simp
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
⊢ 0 < ε / (2 * P)

Tactic:
have hPε0 : 0 < ε / (2 * P) := div_pos ε0 (mul_pos (show (2 : α) > 0 by simp) hP0)
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
let :
  ∀ (N : ℕ) (hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)),
    ∃ (i : ℕ),
      ∀ j ≥ i,
        abv
            (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
              ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
          ε
⊢ ∃ (i : ℕ),
    ∀ j ≥ i,
      abv
          (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
            ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
        ε

Tactic:
let ⟨N, hN⟩ := hb.cauchy₂ hPε0
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
N : ℕ
hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)
⊢ LT.lt.{u_1} (α := α) 0 4

Tactic:
simp
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
N : ℕ
hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)
⊢ 0 < ε / (4 * Q)

Tactic:
have hQε0 : 0 < ε / (4 * Q) :=
    div_pos ε0 (mul_pos (show (0 : α) < 4 by simp) (lt_of_le_of_lt (abv_nonneg _ _) (hQ 0)))
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
N : ℕ
hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)
hQε0 : 0 < ε / (4 * Q)
let :
  ∀ (M : ℕ)
    (hM : ∀ j ≥ M, ∀ k ≥ M, |HSub.hSub (α := α) (∑ n ∈ range j, abv (f n)) (∑ n ∈ range k, abv (f n))| < ε / (4 * Q)),
    ∃ (i : ℕ),
      ∀ j ≥ i,
        abv
            (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
              ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
          ε
⊢ ∃ (i : ℕ),
    ∀ j ≥ i,
      abv
          (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
            ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
        ε

Tactic:
let ⟨M, hM⟩ := ha.cauchy₂ hQε0
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
N : ℕ
hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)
hQε0 : 0 < ε / (4 * Q)
M : ℕ
hM : ∀ j ≥ M, ∀ k ≥ M, |HSub.hSub (α := α) (∑ n ∈ range j, abv (f n)) (∑ n ∈ range k, abv (f n))| < ε / (4 * Q)
⊢ ∃ (i : ℕ),
    ∀ j ≥ i,
      abv
          (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
            ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
        ε

Tactic:
⟨2 * (max N M + 1), fun K hK ↦ ?_⟩

Premises used: HMul.hMul, HAdd.hAdd, Max.max, Exists.intro, OfNat.ofNat
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
N : ℕ
hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)
hQε0 : 0 < ε / (4 * Q)
M : ℕ
hM : ∀ j ≥ M, ∀ k ≥ M, |HSub.hSub (α := α) (∑ n ∈ range j, abv (f n)) (∑ n ∈ range k, abv (f n))| < ε / (4 * Q)
refine :
  ∀ (K : ℕ) (hK : K ≥ 2 * (max N M + 1)),
    abv
        (HMul.hMul (α := β) (∑ k ∈ range K, f k) (∑ k ∈ range K, g k) -
          ∑ n ∈ range K, ∑ m ∈ range (n + 1), f m * g (n - m)) <
      ε
⊢ ∃ (i : ℕ),
    ∀ j ≥ i,
      abv
          (HMul.hMul (α := β) (∑ k ∈ range j, f k) (∑ k ∈ range j, g k) -
            ∑ n ∈ range j, ∑ m ∈ range (n + 1), f m * g (n - m)) <
        ε

Tactic:
refine ⟨2 * (max N M + 1), fun K hK ↦ ?_⟩
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
N : ℕ
hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)
hQε0 : 0 < ε / (4 * Q)
M : ℕ
hM : ∀ j ≥ M, ∀ k ≥ M, |HSub.hSub (α := α) (∑ n ∈ range j, abv (f n)) (∑ n ∈ range k, abv (f n))| < ε / (4 * Q)
K : ℕ
hK : K ≥ 2 * (max N M + 1)
⊢ Eq.{u_2 + 1} (α := β) (∑ m ∈ range K, ∑ k ∈ range (m + 1), f k * g (m - k))
    (∑ m ∈ range K, ∑ n ∈ range (K - m), f m * g n)

Tactic:
simpa using sum_range_diag_flip K fun m n ↦ f m * g n

Premises used: HMul.hMul, Finset.sum_range_diag_flip
-- Module: Mathlib.Algebra.Order.CauSeq.BigOperators
Goal:
α : Type u_1
β : Type u_2
inst : Field α
inst_1 : LinearOrder α
inst_2 : IsStrictOrderedRing α
inst_3 : Ring β
abv : β → α
inst_4 : IsAbsoluteValue abv
f g : ℕ → β
ha : IsCauSeq.{u_1, u_1} (α := α) abs fun (m : ℕ) ↦ ∑ n ∈ range m, abv (f n)
hb : IsCauSeq abv fun (m : ℕ) ↦ ∑ n ∈ range m, g n
ε : α
ε0 : 0 < ε
P : α
hP : ∀ (i : ℕ), |∑ n ∈ range i, abv (f n)| < P
Q : α
hQ : ∀ (i : ℕ), abv (∑ n ∈ range i, g n) < Q
hP0 : 0 < P
hPε0 : 0 < ε / (2 * P)
N : ℕ
hN : ∀ j ≥ N, ∀ k ≥ N, abv (HSub.hSub (α := β) (∑ n ∈ range j, g n) (∑ n ∈ range k, g n)) < ε / (2 * P)
hQε0 : 0 < ε / (4 * Q)
M : ℕ
hM : ∀ j ≥ M, ∀ k ≥ M, |HSub.hSub (α := α) (∑ n ∈ range j, abv (f n)) (∑ n ∈ range k, abv (f n))| < ε / (4 * Q)
K : ℕ
hK : K ≥ 2 * (max N M + 1)
⊢ Eq.{u_2 + 1} (α := β) (∑ m ∈ range K, ∑ k ∈ range (m + 1), f k * g (m - k))
    (∑ m ∈ range K, ∑ n ∈ range (K - m), f m * g n)

Tactic:
have h₁ :
    (∑ m ∈ range K, ∑ k ∈ range (m + 1), f k * g (m - k)) =
      ∑ m ∈ range K, ∑ n ∈ range (K - m), f m * g n := by
    simpa using sum_range_diag_flip K fun m n ↦ f m * g n