@@ -442,72 +442,14 @@ theorem SetTheory.Set.inter_of_prod (A B C D:Set) :
442442/-- Exercise 3.5.5 (b) -/
443443def SetTheory.Set.union_of_prod :
444444 Decidable (∀ (A B C D:Set), (A ×ˢ B) ∪ (C ×ˢ D) = (A ∪ C) ×ˢ (B ∪ D)) := by
445- -- Diagonal vs rectangle: LHS has 2 pairs, RHS has 4.
446- apply isFalse
447- intro h
448- let A : Set := {0 }
449- let B : Set := {0 }
450- let C : Set := {1 }
451- let D : Set := {1 }
452- have hf := h A B C D
453- let z : Object := (⟨(0 :Object), (1 :Object)⟩ : OrderedPair)
454- have hr : z ∈ (A ∪ C) ×ˢ (B ∪ D) := by
455- rw [mem_cartesian]
456- refine ⟨⟨(0 :Object), ?_⟩, ⟨(1 :Object), ?_⟩, rfl⟩
457- · simp [A, C, mem_union, mem_singleton]
458- · simp [B, D, mem_union, mem_singleton]
459- have hl : z ∉ (A ×ˢ B) ∪ (C ×ˢ D) := by
460- intro hin
461- have pair_eq {x y : Object} (hz : z = (⟨x, y⟩ : OrderedPair)) : x = 0 ∧ y = 1 := by
462- have := OrderedPair.toObject.injective (by
463- change OrderedPair.toObject ⟨0 , 1 ⟩ = OrderedPair.toObject ⟨x, y⟩
464- simpa [z] using hz)
465- simpa [OrderedPair.eq] using this
466- cases (mem_union _ _ _).mp hin with
467- | inl hinAB =>
468- obtain ⟨x, y, hz⟩ := (mem_cartesian _ _ _).mp hinAB
469- have hy0 : y.val = (0 :Object) := by simpa [B, mem_singleton] using y.property
470- have hy1 : y.val = (1 :Object) := (pair_eq hz).2
471- exact Nat.zero_ne_one ((ofNat_inj' 0 1 ).mp (hy0.symm.trans hy1))
472- | inr hinCD =>
473- obtain ⟨x, y, hz⟩ := (mem_cartesian _ _ _).mp hinCD
474- have hx1 : x.val = (1 :Object) := by simpa [C, mem_singleton] using x.property
475- have hx0 : x.val = (0 :Object) := (pair_eq hz).1
476- exact Nat.zero_ne_one ((ofNat_inj' 0 1 ).mp (hx0.trans hx1))
477- exact hl (by rwa [← hf] at hr)
445+ -- the first line of this construction should be `apply isTrue` or `apply isFalse`.
446+ sorry
478447
479448/-- Exercise 3.5.5 (c) -/
480449def SetTheory.Set.diff_of_prod :
481450 Decidable (∀ (A B C D:Set), (A ×ˢ B) \ (C ×ˢ D) = (A \ C) ×ˢ (B \ D)) := by
482- -- (0,0) survives on the left but the right-hand product is empty.
483- apply isFalse
484- intro h
485- let A : Set := {0 }
486- let B : Set := {0 }
487- let C : Set := {0 }
488- let D : Set := {1 }
489- have hf := h A B C D
490- let z : Object := (⟨(0 :Object), (0 :Object)⟩ : OrderedPair)
491- have hl : z ∈ (A ×ˢ B) \ (C ×ˢ D) := by
492- refine (mem_sdiff _ _ _).mpr ⟨?_, ?_⟩
493- · rw [mem_cartesian]
494- refine ⟨⟨(0 :Object), by simp [A, mem_singleton]⟩,
495- ⟨(0 :Object), by simp [B, mem_singleton]⟩, rfl⟩
496- · intro hin
497- obtain ⟨x, y, hz⟩ := (mem_cartesian _ _ _).mp hin
498- have hy : y.val = (1 :Object) := by simpa [D, mem_singleton] using y.property
499- have hy0 : y.val = (0 :Object) := by
500- have := OrderedPair.toObject.injective (by
501- change OrderedPair.toObject ⟨0 , 0 ⟩ = OrderedPair.toObject ⟨x.val, y.val⟩
502- simpa [z] using hz)
503- exact ((OrderedPair.eq _ _ _ _).mp this).2
504- exact Nat.zero_ne_one ((ofNat_inj' 0 1 ).mp (hy0.symm.trans hy))
505- have hr : z ∉ (A \ C) ×ˢ (B \ D) := by
506- intro hin
507- obtain ⟨x, _y, _hz⟩ := (mem_cartesian _ _ _).mp hin
508- have hx := (mem_sdiff _ _ _).mp x.property
509- exact hx.2 ((mem_singleton _ _).mpr ((mem_singleton _ _).mp hx.1 ))
510- exact hr (hf ▸ hl)
451+ -- the first line of this construction should be `apply isTrue` or `apply isFalse`.
452+ sorry
511453
512454/--
513455 Exercise 3.5.6.
0 commit comments