(* Limite_de_la_suma_de_sucesiones_convergentes.thy -- Límite de la suma de sucesiones convergentes -- José A. Alonso Jiménez -- Sevilla, 14 de julio de 2021 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- 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 que a es el límite de la sucesión u, por -- definition limite :: "(nat \ real) \ real \ bool" -- where "limite u c \ (\\>0. \k::nat. \n\k. \u n - c\ < \)" -- -- Demostrar que el límite de la suma de dos sucesiones convergentes es -- la suma de los límites de dichas sucesiones. -- ------------------------------------------------------------------ *) theory Limite_de_la_suma_de_sucesiones_convergentes imports Main HOL.Real begin definition limite :: "(nat \ real) \ real \ bool" where "limite u c \ (\\>0. \k::nat. \n\k. \u n - c\ < \)" (* 1\ demostración *) lemma assumes "limite u a" "limite v b" shows "limite (\ n. u n + v n) (a + b)" proof (unfold limite_def) show "\\>0. \k. \n\k. \(u n + v n) - (a + b)\ < \" proof (intro allI impI) fix \ :: real assume "0 < \" then have "0 < \/2" by simp then have "\k. \n\k. \u n - a\ < \/2" using assms(1) limite_def by blast then obtain Nu where hNu : "\n\Nu. \u n - a\ < \/2" by (rule exE) then have "\k. \n\k. \v n - b\ < \/2" using \0 < \/2\ assms(2) limite_def by blast then obtain Nv where hNv : "\n\Nv. \v n - b\ < \/2" by (rule exE) have "\n\max Nu Nv. \(u n + v n) - (a + b)\ < \" proof (intro allI impI) fix n :: nat assume "n \ max Nu Nv" have "\(u n + v n) - (a + b)\ = \(u n - a) + (v n - b)\" by simp also have "\ \ \u n - a\ + \v n - b\" by simp also have "\ < \/2 + \/2" using hNu hNv \max Nu Nv \ n\ by fastforce finally show "\(u n + v n) - (a + b)\ < \" by simp qed then show "\k. \n\k. \u n + v n - (a + b)\ < \ " by (rule exI) qed qed (* 2\ demostración *) lemma assumes "limite u a" "limite v b" shows "limite (\ n. u n + v n) (a + b)" proof (unfold limite_def) show "\\>0. \k. \n\k. \(u n + v n) - (a + b)\ < \" proof (intro allI impI) fix \ :: real assume "0 < \" then have "0 < \/2" by simp obtain Nu where hNu : "\n\Nu. \u n - a\ < \/2" using \0 < \/2\ assms(1) limite_def by blast obtain Nv where hNv : "\n\Nv. \v n - b\ < \/2" using \0 < \/2\ assms(2) limite_def by blast have "\n\max Nu Nv. \(u n + v n) - (a + b)\ < \" using hNu hNv by (smt (verit, ccfv_threshold) field_sum_of_halves max.boundedE) then show "\k. \n\k. \u n + v n - (a + b)\ < \ " by blast qed qed end