-
Notifications
You must be signed in to change notification settings - Fork 0
/
Unicidad_del_limite_de_las_sucesiones_convergentes.lean
106 lines (94 loc) · 2.66 KB
/
Unicidad_del_limite_de_las_sucesiones_convergentes.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
101
102
103
104
105
106
-- Unicidad_del_limite_de_las_sucesiones_convergentes.lean
-- Unicidad del límite de las sucesiones convergentes
-- José A. Alonso Jiménez
-- Sevilla, 12 de julio de 2021
-- ---------------------------------------------------------------------
-- ---------------------------------------------------------------------
-- En Lean, 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 :=
-- λ u a, ∀ ε > 0, ∃ N, ∀ n ≥ N, |u n - a| < ε
-- donde se usa la notación |x| para el valor absoluto de x
-- notation `|`x`|` := abs x
--
-- Demostrar que cada sucesión tiene como máximo un límite.
-- ---------------------------------------------------------------------
import data.real.basic
variables {u : ℕ → ℝ}
variables {a b : ℝ}
notation `|`x`|` := abs x
def limite : (ℕ → ℝ) → ℝ → Prop :=
λ u c, ∀ ε > 0, ∃ N, ∀ n ≥ N, |u n - c| < ε
-- 1ª demostración
-- ===============
lemma aux
(ha : limite u a)
(hb : limite u b)
: b ≤ a :=
begin
by_contra h,
set ε := b - a with hε,
cases ha (ε/2) (by linarith) with A hA,
cases hb (ε/2) (by linarith) with B hB,
set N := max A B with hN,
have hAN : A ≤ N := le_max_left A B,
have hBN : B ≤ N := le_max_right A B,
specialize hA N hAN,
specialize hB N hBN,
rw abs_lt at hA hB,
linarith,
end
example
(ha : limite u a)
(hb : limite u b)
: a = b :=
le_antisymm (aux hb ha) (aux ha hb)
-- 2ª demostración
-- ===============
example
(ha : limite u a)
(hb : limite u b)
: a = b :=
begin
by_contra h,
wlog hab : a < b,
{ have : a < b ∨ a = b ∨ b < a := lt_trichotomy a b,
tauto },
set ε := b - a with hε,
specialize ha (ε/2),
have hε2 : ε/2 > 0 := by linarith,
specialize ha hε2,
cases ha with A hA,
cases hb (ε/2) (by linarith) with B hB,
set N := max A B with hN,
have hAN : A ≤ N := le_max_left A B,
have hBN : B ≤ N := le_max_right A B,
specialize hA N hAN,
specialize hB N hBN,
rw abs_lt at hA hB,
linarith,
end
-- 3ª demostración
-- ===============
example
(ha : limite u a)
(hb : limite u b)
: a = b :=
begin
by_contra h,
wlog hab : a < b,
{ have : a < b ∨ a = b ∨ b < a := lt_trichotomy a b,
tauto },
set ε := b - a with hε,
cases ha (ε/2) (by linarith) with A hA,
cases hb (ε/2) (by linarith) with B hB,
set N := max A B with hN,
have hAN : A ≤ N := le_max_left A B,
have hBN : B ≤ N := le_max_right A B,
specialize hA N hAN,
specialize hB N hBN,
rw abs_lt at hA hB,
linarith,
end