(* Limite_de_sucesion_menor_que_otra_sucesion.thy -- Si (\n)[uₙ \ vₙ], entonces lim uₙ \ lim vₙ -- José A. Alonso Jiménez -- Sevilla, 31-mayo-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 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 si u(n) \ a, v(n) \ c y u(n) \ v(n) para todo n, -- entonces a \ c. -- ------------------------------------------------------------------ *) theory Limite_de_sucesion_menor_que_otra_sucesion 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 c" "\n. u n \ v n" shows "a \ c" proof (rule leI ; intro notI) assume "c < a" let ?\ = "(a - c) /2" have "0 < ?\" using \c < a\ by simp obtain Nu where HNu : "\n\Nu. \u n - a\ < ?\" using assms(1) limite_def \0 < ?\\ by blast obtain Nv where HNv : "\n\Nv. \v n - c\ < ?\" using assms(2) limite_def \0 < ?\\ by blast let ?N = "max Nu Nv" have "?N \ Nu" by simp then have Ha : "\u ?N - a\ < ?\" using HNu by simp have "?N \ Nv" by simp then have Hc : "\v ?N - c\ < ?\" using HNv by simp have "a - c < a - c" proof - have "a - c = (a - u ?N) + (u ?N - c)" by simp also have "\ \ (a - u ?N) + (v ?N - c)" using assms(3) by auto also have "\ \ \(a - u ?N) + (v ?N - c)\" by (rule abs_ge_self) also have "\ \ \a - u ?N\ + \v ?N - c\" by (rule abs_triangle_ineq) also have "\ = \u ?N - a\ + \v ?N - c\" by (simp only: abs_minus_commute) also have "\ < ?\ + ?\" using Ha Hc by (simp only: add_strict_mono) also have "\ = a - c" by (rule field_sum_of_halves) finally show "a - c < a - c" by this qed have "\ a - c < a - c" by (rule less_irrefl) then show False using \a - c < a - c\ by (rule notE) qed (* 2\ demostración *) lemma assumes "limite u a" "limite v c" "\n. u n \ v n" shows "a \ c" proof (rule leI ; intro notI) assume "c < a" let ?\ = "(a - c) /2" have "0 < ?\" using \c < a\ by simp obtain Nu where HNu : "\n\Nu. \u n - a\ < ?\" using assms(1) limite_def \0 < ?\\ by blast obtain Nv where HNv : "\n\Nv. \v n - c\ < ?\" using assms(2) limite_def \0 < ?\\ by blast let ?N = "max Nu Nv" have "?N \ Nu" by simp then have Ha : "\u ?N - a\ < ?\" using HNu by simp then have Ha' : "u ?N - a < ?\ \ -(u ?N - a) < ?\" by argo have "?N \ Nv" by simp then have Hc : "\v ?N - c\ < ?\" using HNv by simp then have Hc' : "v ?N - c < ?\ \ -(v ?N - c) < ?\" by argo have "a - c < a - c" using assms(3) Ha' Hc' by (smt (verit, best) field_sum_of_halves) have "\ a - c < a - c" by simp then show False using \a - c < a - c\ by simp qed (* 3\ demostración *) lemma assumes "limite u a" "limite v c" "\n. u n \ v n" shows "a \ c" proof (rule leI ; intro notI) assume "c < a" let ?\ = "(a - c) /2" have "0 < ?\" using \c < a\ by simp obtain Nu where HNu : "\n\Nu. \u n - a\ < ?\" using assms(1) limite_def \0 < ?\\ by blast obtain Nv where HNv : "\n\Nv. \v n - c\ < ?\" using assms(2) limite_def \0 < ?\\ by blast let ?N = "max Nu Nv" have "?N \ Nu" by simp then have Ha : "\u ?N - a\ < ?\" using HNu by simp then have Ha' : "u ?N - a < ?\ \ -(u ?N - a) < ?\" by argo have "?N \ Nv" by simp then have Hc : "\v ?N - c\ < ?\" using HNv by simp then have Hc' : "v ?N - c < ?\ \ -(v ?N - c) < ?\" by argo show False using assms(3) Ha' Hc' by (smt (verit, best) field_sum_of_halves) qed end