(* Las_clases_de_equivalencia_de_elementos_no_relacionados_son_disjuntas.thy -- Las clases de equivalencia de elementos no relacionados son disjuntas -- José A. Alonso Jiménez -- Sevilla, 2-julio-2024 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- Demostrar que las clases de equivalencia de elementos no relacionados -- son disjuntas. -- ------------------------------------------------------------------ *) theory Las_clases_de_equivalencia_de_elementos_no_relacionados_son_disjuntas imports Main begin definition clase :: "('a \ 'a \ bool) \ 'a \ 'a set" where "clase R x = {y. R x y}" (* 1\ demostración *) lemma assumes "equivp R" "\(R x y)" shows "clase R x \ clase R y = {}" proof - have "\z. z \ clase R x \ z \ clase R y" proof (intro allI impI) fix z assume "z \ clase R x" then have "R x z" using clase_def by (metis CollectD) show "z \ clase R y" proof (rule notI) assume "z \ clase R y" then have "R y z" using clase_def by (metis CollectD) then have "R z y" using assms(1) by (simp only: equivp_symp) with \R x z\ have "R x y" using assms(1) by (simp only: equivp_transp) with \\R x y\ show False by (rule notE) qed qed then show "clase R x \ clase R y = {}" by (simp only: disjoint_iff) qed (* 2\ demostración *) lemma assumes "equivp R" "\(R x y)" shows "clase R x \ clase R y = {}" proof - have "\z. z \ clase R x \ z \ clase R y" proof (intro allI impI) fix z assume "z \ clase R x" then have "R x z" using clase_def by fastforce show "z \ clase R y" proof (rule notI) assume "z \ clase R y" then have "R y z" using clase_def by fastforce then have "R z y" using assms(1) by (simp only: equivp_symp) with \R x z\ have "R x y" using assms(1) by (simp only: equivp_transp) with \\R x y\ show False by simp qed qed then show "clase R x \ clase R y = {}" by (simp only: disjoint_iff) qed (* 3\ demostración *) lemma assumes "equivp R" "\(R x y)" shows "clase R x \ clase R y = {}" using assms by (metis clase_def CollectD equivp_symp equivp_transp disjoint_iff) (* 4\ demostración *) lemma assumes "equivp R" "\(R x y)" shows "clase R x \ clase R y = {}" using assms by (metis equivp_def clase_def CollectD disjoint_iff_not_equal) end