-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTeorema_del_emparedado.thy
73 lines (68 loc) · 2.64 KB
/
Teorema_del_emparedado.thy
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
(* Teorema_del_emparedado.lean
-- Teorema del emparedado
-- José A. Alonso Jiménez
-- Sevilla, 19 de febrero de 2024
-- ------------------------------------------------------------------ *)
(* ---------------------------------------------------------------------
-- En Isabelle/HOL, una sucesión u₀, u₁, u₂, ... se puede representar
-- mediante una función (u : \<nat> \<rightarrow> \<real>) de forma que u(n) es uₙ.
--
-- Se define que a es el límite de la sucesión u, por
-- definition limite :: "(nat \<Rightarrow> real) \<Rightarrow> real \<Rightarrow> bool"
-- where "limite u c \<longleftrightarrow> (\<forall>\<epsilon>>0. \<exists>k::nat. \<forall>n\<ge>k. \<bar>u n - c\<bar> < \<epsilon>)"
--
-- Demostrar que si para todo n, u(n) \<le> v(n) \<le> w(n) y u(n) tiene el
-- mismo límite que, entonces v(n) también tiene dicho límite.
-- ------------------------------------------------------------------ *)
theory Teorema_del_emparedado
imports Main HOL.Real
begin
definition limite :: "(nat \<Rightarrow> real) \<Rightarrow> real \<Rightarrow> bool"
where "limite u c \<longleftrightarrow> (\<forall>\<epsilon>>0. \<exists>k::nat. \<forall>n\<ge>k. \<bar>u n - c\<bar> < \<epsilon>)"
lemma
assumes "limite u a"
"limite w a"
"\<forall>n. u n \<le> v n"
"\<forall>n. v n \<le> w n"
shows "limite v a"
proof (unfold limite_def; intro allI impI)
fix \<epsilon> :: real
assume h\<epsilon> : "0 < \<epsilon>"
obtain N where hN : "\<forall>n\<ge>N. \<bar>u n - a\<bar> < \<epsilon>"
using assms(1) h\<epsilon> limite_def
by auto
obtain N' where hN' : "\<forall>n\<ge>N'. \<bar>w n - a\<bar> < \<epsilon>"
using assms(2) h\<epsilon> limite_def
by auto
have "\<forall>n\<ge>max N N'. \<bar>v n - a\<bar> < \<epsilon>"
proof (intro allI impI)
fix n
assume hn : "n\<ge>max N N'"
have "v n - a < \<epsilon>"
proof -
have "v n - a \<le> w n - a"
using assms(4) by simp
also have "\<dots> \<le> \<bar>w n - a\<bar>"
by simp
also have "\<dots> < \<epsilon>"
using hN' hn by auto
finally show "v n - a < \<epsilon>" .
qed
moreover
have "-(v n - a) < \<epsilon>"
proof -
have "-(v n - a) \<le> -(u n - a)"
using assms(3) by auto
also have "\<dots> \<le> \<bar>u n - a\<bar>"
by simp
also have "\<dots> < \<epsilon>"
using hN hn by auto
finally show "-(v n - a) < \<epsilon>" .
qed
ultimately show "\<bar>v n - a\<bar> < \<epsilon>"
by (simp only: abs_less_iff)
qed
then show "\<exists>k. \<forall>n\<ge>k. \<bar>v n - a\<bar> < \<epsilon>"
by (rule exI)
qed
end