-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLimite_de_la_opuesta.lean
100 lines (87 loc) · 3.22 KB
/
Limite_de_la_opuesta.lean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
-- Limite_de_la_opuesta.lean
-- Si el límite de la sucesión uₙ es a, entonces el límite de -uₙ es -a
-- José A. Alonso Jiménez <https://jaalonso.github.io>
-- Sevilla, 6-junio-2024
-- ---------------------------------------------------------------------
-- ---------------------------------------------------------------------
-- En Lean4, una sucesión u₀, u₁, u₂, ... se puede representar mediante
-- una función (u : ℕ → ℝ) de forma que u(n) es uₙ.
--
-- Se define que a es el límite de la sucesión u, por
-- def limite : (ℕ → ℝ) → ℝ → Prop :=
-- fun u c ↦ ∀ ε > 0, ∃ N, ∀ n ≥ N, |u n - c| < ε
--
-- Demostrar que que si el límite de uₙ es a, entonces el de
-- -uₙ es -a.
-- ---------------------------------------------------------------------
-- Demostración en lenguaje natural
-- ================================
-- Sea ε ∈ ℝ tal que ε > 0. Tenemos que demostrar que
-- (∃ N ∈ ℕ)(∀ n ≥ N)[|-uₙ - -a| < ε] (1)
-- Puesto que el límite de uₙ es a, existe un k ∈ ℕ tal que
-- (∀ n ≥ k)[|uₙ - a| < ε/|c|] (2)
-- Veamos que con k se cumple (1). En efecto, sea n ≥ k. Entonces,
-- |-uₙ - -a| = |-(uₙ - a)|
-- = |uₙ - a|
-- < ε [por (2)]
-- Demostraciones con Lean4
-- ========================
import Mathlib.Data.Real.Basic
import Mathlib.Tactic
variable (u v : ℕ → ℝ)
variable (a c : ℝ)
def limite : (ℕ → ℝ) → ℝ → Prop :=
fun u c ↦ ∀ ε > 0, ∃ N, ∀ n ≥ N, |u n - c| < ε
-- 1ª demostración
-- ===============
example
(h : limite u a)
: limite (fun n ↦ -u n) (-a) :=
by
unfold limite at *
-- h : ∀ (ε : ℝ), ε > 0 → ∃ N, ∀ (n : ℕ), n ≥ N → |u n - a| < ε
-- ⊢ ∀ (ε : ℝ), ε > 0 → ∃ N, ∀ (n : ℕ), n ≥ N → |(fun n => -u n) n - -a| < ε
intro ε hε
-- ε : ℝ
-- hε : ε > 0
-- ⊢ ∃ N, ∀ (n : ℕ), n ≥ N → |(fun n => -u n) n - -a| < ε
specialize h ε hε
-- h : ∃ N, ∀ (n : ℕ), n ≥ N → |u n - a| < ε
cases' h with k hk
-- k : ℕ
-- hk : ∀ (n : ℕ), n ≥ k → |u n - a| < ε
use k
-- ⊢ ∀ (n : ℕ), n ≥ k → |(fun n => -u n) n - -a| < ε
intro n hn
-- n : ℕ
-- hn : n ≥ k
-- ⊢ |(fun n => -u n) n - -a| < ε
calc |(fun n => -u n) n - -a|
= |(-u n - -a)| := rfl
_ = |(-(u n - a))| := by congr ; ring
_ = |(u n - a)| := abs_neg (u n - a)
_ < ε := hk n hn
-- 2ª demostración
-- ===============
example
(h : limite u a)
: limite (fun n ↦ -u n) (-a) :=
by
unfold limite at *
-- h : ∀ (ε : ℝ), ε > 0 → ∃ N, ∀ (n : ℕ), n ≥ N → |u n - a| < ε
-- ⊢ ∀ (ε : ℝ), ε > 0 → ∃ N, ∀ (n : ℕ), n ≥ N → |(fun n => -u n) n - -a| < ε
have h1 : ∀ n, |u n - a| = |(-u n - -a)| := by
intro n
-- n : ℕ
-- ⊢ |u n - a| = |-u n - -a|
rw [abs_sub_comm]
-- ⊢ |a - u n| = |-u n - -a|
congr 1
-- ⊢ a - u n = -u n - -a
ring
simpa [h1] using h
-- Lemas usados
-- ============
-- variable (b : ℝ)
-- #check (abs_neg a : |(-a)| = |a|)
-- #check (abs_sub_comm a b : |a - b| = |b - a|)