(* Las_sucesiones_convergentes_son_sucesiones_de_Cauchy.thy -- Las sucesiones convergentes son sucesiones de Cauchy. -- José A. Alonso Jiménez -- Sevilla, 28-junio-2024 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- En Isabelle/HOL, una sucesión u₀, u₁, u₂, ... se puede representar -- mediante una función (u : \ \ \) de forma que u(n) es uₙ. -- -- Se define -- + a es un límite de la sucesión u , por -- def limite (u : \ \ \) (a : \) := -- \ \ > 0, \ N, \ n \ N, \u n - a\ \ \ -- + la sucesión u es convergente por -- def convergente (u : \ \ \) := -- \ l, limite u l -- + la sucesión u es de Cauchy por -- def sucesion_cauchy (u : \ \ \) := -- \ \ > 0, \ N, \ p q, p \ N \ q \ N \ \u p - u q\ \ \ -- -- Demostrar que las sucesiones convergentes son de Cauchy. -- ------------------------------------------------------------------ *) theory Las_sucesiones_convergentes_son_sucesiones_de_Cauchy imports Main HOL.Real begin definition limite :: "(nat \ real) \ real \ bool" where "limite u c \ (\\>0. \k::nat. \n\k. \u n - c\ < \)" definition suc_convergente :: "(nat \ real) \ bool" where "suc_convergente u \ (\ l. limite u l)" definition suc_cauchy :: "(nat \ real) \ bool" where "suc_cauchy u \ (\\>0. \k. \m\k. \n\k. \u m - u n\ < \)" (* 1\ demostración *) lemma assumes "suc_convergente u" shows "suc_cauchy u" proof (unfold suc_cauchy_def; intro allI impI) fix \ :: real assume "0 < \" then have "0 < \/2" by simp obtain a where "limite u a" using assms suc_convergente_def by blast then obtain k where hk : "\n\k. \u n - a\ < \/2" using \0 < \ / 2\ limite_def by blast have "\m\k. \n\k. \u m - u n\ < \" proof (intro allI impI) fix p q assume hp : "p \ k" and hq : "q \ k" then have hp' : "\u p - a\ < \/2" using hk by blast have hq' : "\u q - a\ < \/2" using hk hq by blast have "\u p - u q\ = \(u p - a) + (a - u q)\" by simp also have "\ \ \u p - a\ + \a - u q\" by simp also have "\ = \u p - a\ + \u q - a\" by simp also have "\ < \/2 + \/2" using hp' hq' by simp also have "\ = \" by simp finally show "\u p - u q\ < \" by this qed then show "\k. \m\k. \n\k. \u m - u n\ < \" by (rule exI) qed (* 2\ demostración *) lemma assumes "suc_convergente u" shows "suc_cauchy u" proof (unfold suc_cauchy_def; intro allI impI) fix \ :: real assume "0 < \" then have "0 < \/2" by simp obtain a where "limite u a" using assms suc_convergente_def by blast then obtain k where hk : "\n\k. \u n - a\ < \/2" using \0 < \ / 2\ limite_def by blast have "\m\k. \n\k. \u m - u n\ < \" proof (intro allI impI) fix p q assume hp : "p \ k" and hq : "q \ k" then have hp' : "\u p - a\ < \/2" using hk by blast have hq' : "\u q - a\ < \/2" using hk hq by blast show "\u p - u q\ < \" using hp' hq' by argo qed then show "\k. \m\k. \n\k. \u m - u n\ < \" by (rule exI) qed (* 3\ demostración *) lemma assumes "suc_convergente u" shows "suc_cauchy u" proof (unfold suc_cauchy_def; intro allI impI) fix \ :: real assume "0 < \" then have "0 < \/2" by simp obtain a where "limite u a" using assms suc_convergente_def by blast then obtain k where hk : "\n\k. \u n - a\ < \/2" using \0 < \ / 2\ limite_def by blast have "\m\k. \n\k. \u m - u n\ < \" using hk by (smt (z3) field_sum_of_halves) then show "\k. \m\k. \n\k. \u m - u n\ < \" by (rule exI) qed (* 4\ demostración *) lemma assumes "suc_convergente u" shows "suc_cauchy u" proof (unfold suc_cauchy_def; intro allI impI) fix \ :: real assume "0 < \" then have "0 < \/2" by simp obtain a where "limite u a" using assms suc_convergente_def by blast then obtain k where hk : "\n\k. \u n - a\ < \/2" using \0 < \ / 2\ limite_def by blast then show "\k. \m\k. \n\k. \u m - u n\ < \" by (smt (z3) field_sum_of_halves) qed end