-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLas_clases_de_equivalencia_de_elementos_relacionados_son_iguales.thy
82 lines (68 loc) · 2.21 KB
/
Las_clases_de_equivalencia_de_elementos_relacionados_son_iguales.thy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
(* Las_clases_de_equivalencia_de_elementos_relacionados_son_iguales.thy
-- Las clases de equivalencia de elementos relacionados son iguales
-- José A. Alonso Jiménez <https://jaalonso.github.io>
-- 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 \<Rightarrow> 'a \<Rightarrow> bool) \<Rightarrow> 'a \<Rightarrow> '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\<ordfeminine> demostración del lema auxiliar *)
lemma
assumes "equivp R"
"R x y"
shows "clase R y \<subseteq> clase R x"
proof (rule subsetI)
fix z
assume "z \<in> 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 \<open>R x y\<close> \<open>R y z\<close> by (rule transpD)
then show "z \<in> clase R x"
by (simp add: clase_def)
qed
(* 2\<ordfeminine> demostración del lema auxiliar *)
lemma aux :
assumes "equivp R"
"R x y"
shows "clase R y \<subseteq> clase R x"
using assms
by (metis clase_def eq_refl equivp_def)
(* A continuación se presentan demostraciones del ejercicio *)
(* 1\<ordfeminine> demostración *)
lemma
assumes "equivp R"
"R x y"
shows "clase R y = clase R x"
proof (rule equalityI)
show "clase R y \<subseteq> clase R x"
using assms by (rule aux)
next
show "clase R x \<subseteq> clase R y"
proof -
have "symp R"
using assms(1) equivpE by blast
have "R y x"
using \<open>R x y\<close> by (simp add: \<open>symp R\<close> sympD)
with assms(1) show "clase R x \<subseteq> clase R y"
by (rule aux)
qed
qed
(* 2\<ordfeminine> 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