(* Las_particiones_definen_relaciones_de_equivalencia.thy -- Las particiones definen relaciones de equivalencia -- José A. Alonso Jiménez -- Sevilla, 9-julio-2024 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- Cada familia de conjuntos P define una relación de forma que dos -- elementos están relacionados si algún conjunto de P contiene a ambos -- elementos. Se puede definir en Isabelle por -- definition relacion :: "('a set) set \ 'a \ 'a \ bool" where -- "relacion P x y \ (\A\P. x \ A \ y \ A)" -- -- Una familia de subconjuntos de X es una partición de X si cada elemento -- de X pertenece a un único conjunto de P y todos los elementos de P -- son no vacíos. Se puede definir en Isabelle por -- definition particion :: "('a set) set \ bool" where -- "particion P \ (\x. (\B\P. x \ B \ (\C\P. x \ C \ B = C))) \ {} \ P" -- -- Demostrar que si P es una partición de X, entonces la relación -- definida por P es de equivalencia. -- ------------------------------------------------------------------ *) theory Las_particiones_definen_relaciones_de_equivalencia imports Main begin definition relacion :: "('a set) set \ 'a \ 'a \ bool" where "relacion P x y \ (\A\P. x \ A \ y \ A)" definition particion :: "('a set) set \ bool" where "particion P \ (\x. (\B\P. x \ B \ (\C\P. x \ C \ B = C))) \ {} \ P" (* 1\ demostración *) lemma assumes "particion P" shows "equivp (relacion P)" proof (rule equivpI) show "reflp (relacion P)" proof (rule reflpI) fix x obtain A where "A \ P \ x \ A" using assms particion_def by metis then show "relacion P x x" using relacion_def by metis qed next show "symp (relacion P)" proof (rule sympI) fix x y assume "relacion P x y" then obtain A where "A \ P \ x \ A \ y \ A" using relacion_def by metis then show "relacion P y x" using relacion_def by metis qed next show "transp (relacion P)" proof (rule transpI) fix x y z assume "relacion P x y" and "relacion P y z" obtain A where "A \ P" and hA : "x \ A \ y \ A" using \relacion P x y\ by (meson relacion_def) obtain B where "B \ P" and hB : "y \ B \ z \ B" using \relacion P y z\ by (meson relacion_def) have "A = B" proof - obtain C where "C \ P" and hC : "y \ C \ (\D\P. y \ D \ C = D)" using assms particion_def by metis then show "A = B" using \A \ P\ \B \ P\ hA hB by blast qed then have "x \ A \ z \ A" using hA hB by auto then show "relacion P x z" using \A = B\ \A \ P\ relacion_def by metis qed qed (* 2\ demostración *) lemma assumes "particion P" shows "equivp (relacion P)" proof (rule equivpI) show "reflp (relacion P)" using assms particion_def relacion_def by (metis reflpI) next show "symp (relacion P)" using assms relacion_def by (metis sympI) next show "transp (relacion P)" using assms relacion_def particion_def by (smt (verit) transpI) qed end