(* Propiedad_semidistributiva_de_la_interseccion_sobre_la_union_2.lean (s ∩ t) ∪ (s ∩ u) ⊆ s ∩ (t ∪ u) José A. Alonso Jiménez Sevilla, 22 de febrero de 2024 --------------------------------------------------------------------- *) (* --------------------------------------------------------------------- -- Demostrar que -- (s \ t) \ (s \ u) \ s \ (t \ u) -- ------------------------------------------------------------------ *) theory Propiedad_semidistributiva_de_la_interseccion_sobre_la_union_2 imports Main begin (* 1\ demostración *) lemma "(s \ t) \ (s \ u) \ s \ (t \ u)" proof (rule subsetI) fix x assume "x \ (s \ t) \ (s \ u)" then show "x \ s \ (t \ u)" proof (rule UnE) assume xst : "x \ s \ t" then have xs : "x \ s" by (simp only: IntD1) have xt : "x \ t" using xst by (simp only: IntD2) then have xtu : "x \ t \ u" by (simp only: UnI1) show "x \ s \ (t \ u)" using xs xtu by (simp only: IntI) next assume xsu : "x \ s \ u" then have xs : "x \ s" by (simp only: IntD1) have xt : "x \ u" using xsu by (simp only: IntD2) then have xtu : "x \ t \ u" by (simp only: UnI2) show "x \ s \ (t \ u)" using xs xtu by (simp only: IntI) qed qed (* 2\ demostración *) lemma "(s \ t) \ (s \ u) \ s \ (t \ u)" proof fix x assume "x \ (s \ t) \ (s \ u)" then show "x \ s \ (t \ u)" proof assume xst : "x \ s \ t" then have xs : "x \ s" by simp have xt : "x \ t" using xst by simp then have xtu : "x \ t \ u" by simp show "x \ s \ (t \ u)" using xs xtu by simp next assume xsu : "x \ s \ u" then have xs : "x \ s" by (simp only: IntD1) have xt : "x \ u" using xsu by simp then have xtu : "x \ t \ u" by simp show "x \ s \ (t \ u)" using xs xtu by simp qed qed (* 3\ demostración *) lemma "(s \ t) \ (s \ u) \ s \ (t \ u)" proof fix x assume "x \ (s \ t) \ (s \ u)" then show "x \ s \ (t \ u)" proof assume "x \ s \ t" then show "x \ s \ (t \ u)" by simp next assume "x \ s \ u" then show "x \ s \ (t \ u)" by simp qed qed (* 4\ demostración *) lemma "(s \ t) \ (s \ u) \ s \ (t \ u)" proof fix x assume "x \ (s \ t) \ (s \ u)" then show "x \ s \ (t \ u)" by auto qed (* 5\ demostración *) lemma "(s \ t) \ (s \ u) \ s \ (t \ u)" by auto (* 6\ demostración *) lemma "(s \ t) \ (s \ u) \ s \ (t \ u)" by (simp only: distrib_inf_le) end