Skip to main content

Reto 8: Sucesiones con infinitos términos grandes no convergen a límites pequeños

El reto de esta semana consiste en demostrar en Lean 4 que que una sucesión que posee infinitos términos con valor absoluto superior a 10 no puede converger a un límite cuyo valor absoluto sea menor que 5.

Para ello, completar la siguiente teoría de Lean 4:

import Mathlib.Data.Real.Basic
import Mathlib.Tactic

def LimSuc (a :   ) (L : ) : Prop :=
   ε > 0,  k : ,  n  k, |a n - L| < ε

variable {a :   }
variable {L : }

example
  (ha :  k,  n  k, |a n| > 10)
  : ¬  L, LimSuc a L  |L| < 5 :=
by sorry

1. Demostración en lenguaje natural

Para demostrar la negación, se supone que existe un \(L ∈ ℝ\) tal que \(a_n\) converge a \(L\) y \[ ∣L∣ \; < 5 \tag{1} \] y se llega a una contradicción.

Por la definición de límite, usando \(ε = 5 > 0\), existe \(k ∈ ℕ\) tal que \[ ∀ n ≥ k, |a_n − L| < 5 \tag{2} \]

Por hipótesis sobre la sucesión, para ese mismo \(k\) existe un \(n ∈ ℕ\) tal que se cumplen las siguientes dos relaciones: \[ n ≥ k \tag{3} \] \[ ∣a_n∣ \; > 10 \tag{4} \] De (2) y (3) se tiene que \[ ∣a_n − L∣ \; < 5 \tag{5} \]

Para obtener una contradicción basta probar que \(10 < 10\), que se demuestra a continuación: \[ \begin{array}{llll} 10 &< &∣a_n∣ &&\text{[por (4)]} \\ &= &∣(a_n − L) + L∣ \\ &≤ &∣a_n − L∣ + ∣L∣ &&\text{[por desigualdad triangular]} \\ &< &5 + 5 &&\text{[por (5) y (1)]} \\ &= &10 \end{array} \]

2. Demostraciones con Lean4

import Mathlib.Data.Real.Basic
import Mathlib.Tactic

def LimSuc (a :   ) (L : ) : Prop :=
   ε > 0,  k : ,  n  k, |a n - L| < ε

variable {a :   }
variable {L : }

-- 1ª demostración
-- ===============

example
  (ha :  k,  n  k, |a n| > 10)
  : ¬  L, LimSuc a L  |L| < 5 :=
by
  intro L, hL1, hL2
  -- L : ℝ
  -- hL1 : LimSuc a L
  -- hL2 : |L| < 5
  -- ⊢ False
  obtain k, hk := hL1 5 (by norm_num)
  -- k : ℕ
  -- hk : ∀ n ≥ k, |a n - L| < 5
  obtain n, hn1, hn2 := ha k
  -- n : ℕ
  -- hn1 : n ≥ k
  -- hn2 : |a n| > 10
  grind

-- 2ª demostración
-- ===============

example
  (ha :  k,  n  k, |a n| > 10)
  : ¬  L, LimSuc a L  |L| < 5 :=
by
  intro L, hL1, hL2
  -- L : ℝ
  -- hL1 : LimSuc a L
  -- hL2 : |L| < 5
  -- ⊢ False
  obtain k, hk := hL1 5 (by norm_num)
  -- k : ℕ
  -- hk : ∀ n ≥ k, |a n - L| < 5
  obtain n, hn1, hn2 := ha k
  -- n : ℕ
  -- hn1 : n ≥ k
  -- hn2 : |a n| > 10
  apply lt_irrefl (10 : )
  -- ⊢ 10 < 10
  calc 10 < |a n|        := hn2
     _ = |(a n - L) + L| := by grind
     _  |a n - L| + |L| := by grind
     _ < 5 + 5           := by grind
     _ = 10              := by grind

-- 3ª demostración
-- ===============

example
  (ha :  k,  n  k, |a n| > 10)
  : ¬  L, LimSuc a L  |L| < 5 :=
by
  intro L, hL1, hL2
  -- L : ℝ
  -- hL1 : LimSuc a L
  -- hL2 : |L| < 5
  -- ⊢ False
  obtain k, hk := hL1 5 (by positivity)
  -- k : ℕ
  -- hk : ∀ n ≥ k, |a n - L| < 5
  obtain n, hn1, hn2 := ha k
  -- n : ℕ
  -- hn1 : n ≥ k
  -- hn2 : |a n| > 10
  apply lt_irrefl (10 : )
  -- ⊢ 10 < 10
  have h5 : |a n - L| < 5 := hk n hn1
  calc 10 < |a n|         := hn2
     _ = |(a n - L) + L|  := congrArg abs (sub_add_cancel (a n) L).symm
     _  |a n - L| + |L|  := abs_add_le (a n - L) L
     _ < 5 + 5            := add_lt_add h5 hL2
     _ = 10               := by norm_num

-- Lemas usados
-- ============

variable (a b c d : )

#check (abs_add_le a b : |a + b|  |a| + |b|)
#check (add_lt_add : a < b  c < d  a + c < b + d)
#check (lt_irrefl a : ¬a < a)
#check (sub_add_cancel a b : (a - b) + b = a)

Se puede interactuar con las demostraciones anteriores en Lean 4 Web.