(* Las_funciones_de_extraccion_no_estan_acotadas.thy -- Las funciones de extracción no están acotadas. -- José A. Alonso Jiménez -- Sevilla, 11-julio-2024 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- Para extraer una subsucesión se aplica una función de extracción que -- conserva el orden; por ejemplo, la subsucesión -- uₒ, u₂, u₄, u₆, ... -- se ha obtenido con la función de extracción \ tal que \(n) = 2*n. -- -- En Isabelle/HOL, se puede definir que \ es una función de -- extracción por -- definition extraccion :: "(nat \ nat) \ bool" where -- "extraccion \ \ (\ n m. n < m \ \ n < \ m)" -- -- Demostrar que las funciones de extracción no está acotadas; es decir, -- que si \ es una función de extracción, entonces -- \ N N', \ k \ N', \ k \ N -- ------------------------------------------------------------------ *) theory Las_funciones_de_extraccion_no_estan_acotadas imports Main begin definition extraccion :: "(nat \ nat) \ bool" where "extraccion \ \ (\ n m. n < m \ \ n < \ m)" (* En la demostración se usará el siguiente lema *) lemma aux : assumes "extraccion \" shows "n \ \ n" proof (induct n) show "0 \ \ 0" by simp next fix n assume HI : "n \ \ n" also have "\ n < \ (Suc n)" using assms extraccion_def by blast finally show "Suc n \ \ (Suc n)" by simp qed (* 1\ demostración *) lemma assumes "extraccion \" shows "\ N N'. \ k \ N'. \ k \ N" proof (intro allI) fix N N' :: nat let ?k = "max N N'" have "max N N' \ ?k" by (rule le_refl) then have hk : "N \ ?k \ N' \ ?k" by (simp only: max.bounded_iff) then have "?k \ N'" by (rule conjunct2) moreover have "N \ \ ?k" proof - have "N \ ?k" using hk by (rule conjunct1) also have "\ \ \ ?k" using assms by (rule aux) finally show "N \ \ ?k" by this qed ultimately have "?k \ N' \ \ ?k \ N" by (rule conjI) then show "\k \ N'. \ k \ N" by (rule exI) qed (* 2\ demostración *) lemma assumes "extraccion \" shows "\ N N'. \ k \ N'. \ k \ N" proof (intro allI) fix N N' :: nat let ?k = "max N N'" have "?k \ N'" by simp moreover have "N \ \ ?k" proof - have "N \ ?k" by simp also have "\ \ \ ?k" using assms by (rule aux) finally show "N \ \ ?k" by this qed ultimately show "\k \ N'. \ k \ N" by blast qed end