(* Union_con_interseccion_general.thy -- s ∪ (⋂ i, A i) = ⋂ i, (A i ∪ s). -- José A. Alonso Jiménez -- Sevilla, 4-junio-2021 -- ------------------------------------------------------------------ *) (* 1--------------------------------------------------------------------- Demostrar que s \ (\ i. A i) = (\ i. A i \ s) ------------------------------------------------------------------- *) theory Union_con_interseccion_general imports Main begin (* 1\ demostración *) lemma "s \ (\ i \ I. A i) = (\ i \ I. A i \ s)" proof (rule equalityI) show "s \ (\ i \ I. A i) \ (\ i \ I. A i \ s)" proof (rule subsetI) fix x assume "x \ s \ (\ i \ I. A i)" then show "x \ (\ i \ I. A i \ s)" proof (rule UnE) assume "x \ s" show "x \ (\ i \ I. A i \ s)" proof (rule INT_I) fix i assume "i \ I" show "x \ A i \ s" using \x \ s\ by (rule UnI2) qed next assume h1 : "x \ (\ i \ I. A i)" show "x \ (\ i \ I. A i \ s)" proof (rule INT_I) fix i assume "i \ I" with h1 have "x \ A i" by (rule INT_D) then show "x \ A i \ s" by (rule UnI1) qed qed qed next show "(\ i \ I. A i \ s) \ s \ (\ i \ I. A i)" proof (rule subsetI) fix x assume h2 : "x \ (\ i \ I. A i \ s)" show "x \ s \ (\ i \ I. A i)" proof (cases "x \ s") assume "x \ s" then show "x \ s \ (\ i \ I. A i)" by (rule UnI1) next assume "x \ s" have "x \ (\ i \ I. A i)" proof (rule INT_I) fix i assume "i \ I" with h2 have "x \ A i \ s" by (rule INT_D) then show "x \ A i" proof (rule UnE) assume "x \ A i" then show "x \ A i" by this next assume "x \ s" with \x \ s\ show "x \ A i" by (rule notE) qed qed then show "x \ s \ (\ i \ I. A i)" by (rule UnI2) qed qed qed (* 2\ demostración *) lemma "s \ (\ i \ I. A i) = (\ i \ I. A i \ s)" proof show "s \ (\ i \ I. A i) \ (\ i \ I. A i \ s)" proof fix x assume "x \ s \ (\ i \ I. A i)" then show "x \ (\ i \ I. A i \ s)" proof assume "x \ s" show "x \ (\ i \ I. A i \ s)" proof fix i assume "i \ I" show "x \ A i \ s" using \x \ s\ by simp qed next assume h1 : "x \ (\ i \ I. A i)" show "x \ (\ i \ I. A i \ s)" proof fix i assume "i \ I" with h1 have "x \ A i" by simp then show "x \ A i \ s" by simp qed qed qed next show "(\ i \ I. A i \ s) \ s \ (\ i \ I. A i)" proof fix x assume h2 : "x \ (\ i \ I. A i \ s)" show "x \ s \ (\ i \ I. A i)" proof (cases "x \ s") assume "x \ s" then show "x \ s \ (\ i \ I. A i)" by simp next assume "x \ s" have "x \ (\ i \ I. A i)" proof fix i assume "i \ I" with h2 have "x \ A i \ s" by (rule INT_D) then show "x \ A i" proof assume "x \ A i" then show "x \ A i" by this next assume "x \ s" with \x \ s\ show "x \ A i" by simp qed qed then show "x \ s \ (\ i \ I. A i)" by simp qed qed qed (* 3\ demostración *) lemma "s \ (\ i \ I. A i) = (\ i \ I. A i \ s)" proof show "s \ (\ i \ I. A i) \ (\ i \ I. A i \ s)" proof fix x assume "x \ s \ (\ i \ I. A i)" then show "x \ (\ i \ I. A i \ s)" proof assume "x \ s" then show "x \ (\ i \ I. A i \ s)" by simp next assume "x \ (\ i \ I. A i)" then show "x \ (\ i \ I. A i \ s)" by simp qed qed next show "(\ i \ I. A i \ s) \ s \ (\ i \ I. A i)" proof fix x assume h2 : "x \ (\ i \ I. A i \ s)" show "x \ s \ (\ i \ I. A i)" proof (cases "x \ s") assume "x \ s" then show "x \ s \ (\ i \ I. A i)" by simp next assume "x \ s" then show "x \ s \ (\ i \ I. A i)" using h2 by simp qed qed qed (* 4\ demostración *) lemma "s \ (\ i \ I. A i) = (\ i \ I. A i \ s)" proof show "s \ (\ i \ I. A i) \ (\ i \ I. A i \ s)" proof fix x assume "x \ s \ (\ i \ I. A i)" then show "x \ (\ i \ I. A i \ s)" proof assume "x \ s" then show ?thesis by simp next assume "x \ (\ i \ I. A i)" then show ?thesis by simp qed qed next show "(\ i \ I. A i \ s) \ s \ (\ i \ I. A i)" proof fix x assume h2 : "x \ (\ i \ I. A i \ s)" show "x \ s \ (\ i \ I. A i)" proof (cases "x \ s") case True then show ?thesis by simp next case False then show ?thesis using h2 by simp qed qed qed (* 5\ demostración *) lemma "s \ (\ i \ I. A i) = (\ i \ I. A i \ s)" by auto end