(* Los_supremos_de_las_sucesiones_crecientes_son_sus_limites.lean -- Los supremos de las sucesiones crecientes son sus límites -- José A. Alonso Jiménez -- Sevilla, 24-mayo-2024 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- Sea u una sucesión creciente. Demostrar que si M es un supremo de u, -- entonces el límite de u es M. -- ------------------------------------------------------------------ *) theory Los_supremos_de_las_sucesiones_crecientes_son_sus_limites imports Main HOL.Real begin (* (limite u c) expresa que el límite de u es c. *) definition limite :: "(nat \ real) \ real \ bool" where "limite u c \ (\\>0. \k. \n\k. \u n - c\ \ \)" (* (supremo u M) expresa que el supremo de u es M. *) definition supremo :: "(nat \ real) \ real \ bool" where "supremo u M \ ((\n. u n \ M) \ (\\>0. \k. \n\k. u n \ M - \))" (* 1\ demostración *) lemma assumes "mono u" "supremo u M" shows "limite u M" proof (unfold limite_def; intro allI impI) fix \ :: real assume "0 < \" have hM : "((\n. u n \ M) \ (\\>0. \k. \n\k. u n \ M - \))" using assms(2) by (simp add: supremo_def) then have "\\>0. \k. \n\k. u n \ M - \" by (rule conjunct2) then have "\k. \n\k. u n \ M - \" by (simp only: \0 < \\) then obtain n0 where "\n\n0. u n \ M - \" by (rule exE) have "\n\n0. \u n - M\ \ \" proof (intro allI impI) fix n assume "n \ n0" show "\u n - M\ \ \" proof (rule abs_leI) have "\n. u n \ M" using hM by (rule conjunct1) then have "u n - M \ M - M" by simp also have "\ = 0" by (simp only: diff_self) also have "\ \ \" using \0 < \\ by (simp only: less_imp_le) finally show "u n - M \ \" by this next have "-\ = (M - \) - M" by simp also have "\ \ u n - M" using \\n\n0. M - \ \ u n\ \n0 \ n\ by auto finally have "-\ \ u n - M" by this then show "- (u n - M) \ \" by simp qed qed then show "\k. \n\k. \u n - M\ \ \" by (rule exI) qed (* 2\ demostración *) lemma assumes "mono u" "supremo u M" shows "limite u M" proof (unfold limite_def; intro allI impI) fix \ :: real assume "0 < \" have hM : "((\n. u n \ M) \ (\\>0. \k. \n\k. u n \ M - \))" using assms(2) by (simp add: supremo_def) then have "\k. \n\k. u n \ M - \" using \0 < \\ by presburger then obtain n0 where "\n\n0. u n \ M - \" by (rule exE) then have "\n\n0. \u n - M\ \ \" using hM by auto then show "\k. \n\k. \u n - M\ \ \" by (rule exI) qed end