Skip to content

Commit cfab6d1

Browse files
committed
Revert "Fill Exercise 3.5.5: product does not distribute over union or difference."
This reverts commit 0481710.
1 parent 0481710 commit cfab6d1

1 file changed

Lines changed: 4 additions & 62 deletions

File tree

Analysis/Section_3_5.lean

Lines changed: 4 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -442,72 +442,14 @@ theorem SetTheory.Set.inter_of_prod (A B C D:Set) :
442442
/-- Exercise 3.5.5 (b) -/
443443
def 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) -/
480449
def 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

Comments
 (0)