(* Las_clases_de_equivalencia_de_elementos_relacionados_son_iguales.thy -- Las clases de equivalencia de elementos relacionados son iguales -- José A. Alonso Jiménez -- Sevilla, 1-julio-2024 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- Demostrar que las clases de equivalencia de elementos relacionados -- son iguales. -- ------------------------------------------------------------------ *) theory Las_clases_de_equivalencia_de_elementos_relacionados_son_iguales imports Main begin definition clase :: "('a \ 'a \ bool) \ 'a \ 'a set" where "clase R x = {y. R x y}" (* En la demostración se usará el siguiente lema del que se presentan varias demostraciones. *) (* 1\ demostración del lema auxiliar *) lemma assumes "equivp R" "R x y" shows "clase R y \ clase R x" proof (rule subsetI) fix z assume "z \ clase R y" then have "R y z" by (simp add: clase_def) have "transp R" using assms(1) by (rule equivp_imp_transp) then have "R x z" using \R x y\ \R y z\ by (rule transpD) then show "z \ clase R x" by (simp add: clase_def) qed (* 2\ demostración del lema auxiliar *) lemma aux : assumes "equivp R" "R x y" shows "clase R y \ clase R x" using assms by (metis clase_def eq_refl equivp_def) (* A continuación se presentan demostraciones del ejercicio *) (* 1\ demostración *) lemma assumes "equivp R" "R x y" shows "clase R y = clase R x" proof (rule equalityI) show "clase R y \ clase R x" using assms by (rule aux) next show "clase R x \ clase R y" proof - have "symp R" using assms(1) equivpE by blast have "R y x" using \R x y\ by (simp add: \symp R\ sympD) with assms(1) show "clase R x \ clase R y" by (rule aux) qed qed (* 2\ demostración *) lemma assumes "equivp R" "R x y" shows "clase R y = clase R x" using assms by (metis clase_def equivp_def) end