(* Equivalencia_de_inversos_iguales_al_neutro.thy -- Equivalencia de inversos iguales al neutro -- José A. Alonso Jiménez -- Sevilla, 7-mayo-2024 -- ------------------------------------------------------------------ *) (* --------------------------------------------------------------------- -- Sea M un monoide y a, b \ M tales que a * b = 1. Demostrar que a = 1 -- si y sólo si b = 1. -- ------------------------------------------------------------------ *) theory Equivalencia_de_inversos_iguales_al_neutro imports Main begin context monoid begin (* 1\ demostración *) lemma assumes "a \<^bold>* b = \<^bold>1" shows "a = \<^bold>1 \ b = \<^bold>1" proof (rule iffI) assume "a = \<^bold>1" have "b = \<^bold>1 \<^bold>* b" by (simp only: left_neutral) also have "\ = a \<^bold>* b" by (simp only: \a = \<^bold>1\) also have "\ = \<^bold>1" by (simp only: \a \<^bold>* b = \<^bold>1\) finally show "b = \<^bold>1" by this next assume "b = \<^bold>1" have "a = a \<^bold>* \<^bold>1" by (simp only: right_neutral) also have "\ = a \<^bold>* b" by (simp only: \b = \<^bold>1\) also have "\ = \<^bold>1" by (simp only: \a \<^bold>* b = \<^bold>1\) finally show "a = \<^bold>1" by this qed (* 2\ demostración *) lemma assumes "a \<^bold>* b = \<^bold>1" shows "a = \<^bold>1 \ b = \<^bold>1" proof assume "a = \<^bold>1" have "b = \<^bold>1 \<^bold>* b" by simp also have "\ = a \<^bold>* b" using \a = \<^bold>1\ by simp also have "\ = \<^bold>1" using \a \<^bold>* b = \<^bold>1\ by simp finally show "b = \<^bold>1" . next assume "b = \<^bold>1" have "a = a \<^bold>* \<^bold>1" by simp also have "\ = a \<^bold>* b" using \b = \<^bold>1\ by simp also have "\ = \<^bold>1" using \a \<^bold>* b = \<^bold>1\ by simp finally show "a = \<^bold>1" . qed (* 3\ demostración *) lemma assumes "a \<^bold>* b = \<^bold>1" shows "a = \<^bold>1 \ b = \<^bold>1" by (metis assms left_neutral right_neutral) end end