@@ -142,7 +142,7 @@ example : ({1, 2}: Set) ×ˢ ({3, 4, 5}: Set) = ({
142
142
((mk_cartesian (2 : Nat) (3 : Nat)): Object),
143
143
((mk_cartesian (2 : Nat) (4 : Nat)): Object),
144
144
((mk_cartesian (2 : Nat) (5 : Nat)): Object)
145
- }: Set) := by apply ext; aesop
145
+ }: Set) := by ext; aesop
146
146
147
147
/-- Example 3.5.5 / Exercise 3.6.5. There is a bijection between `X ×ˢ Y` and `Y ×ˢ X`. -/
148
148
noncomputable abbrev SetTheory.Set.prod_commutator (X Y:Set) : X ×ˢ Y ≃ Y ×ˢ X where
@@ -158,29 +158,31 @@ noncomputable abbrev SetTheory.Set.curry_equiv {X Y Z:Set} : (X → Y → Z) ≃
158
158
left_inv := by intro; simp
159
159
right_inv := by intro; simp [←pair_eq_fst_snd]
160
160
161
- /-- Definition 3.5.6 -/
162
- abbrev SetTheory.Set.tuple {I:Set} {X: I → Set} (a: ∀ i, X i) : Object :=
163
- ((fun i ↦ ⟨ a i, by rw [mem_iUnion]; use i; exact (a i).property ⟩):I → iUnion I X)
161
+ /-- Definition 3.5.6. The indexing set `I` plays the role of `{ i : 1 ≤ i ≤ n }` in the text.
162
+ See Exercise 3.5.10 below for some connections betweeen this concept and the preceding notion
163
+ of Cartesian product and ordered pair. -/
164
+ abbrev SetTheory.Set.tuple {I:Set} {X: I → Set} (x: ∀ i, X i) : Object :=
165
+ ((fun i ↦ ⟨ x i, by rw [mem_iUnion]; use i; exact (x i).property ⟩):I → iUnion I X)
164
166
165
167
/-- Definition 3.5.6 -/
166
168
abbrev SetTheory.Set.iProd {I: Set} (X: I → Set) : Set :=
167
- ((iUnion I X)^I).specify (fun t ↦ ∃ a : ∀ i, X i, t = tuple a )
169
+ ((iUnion I X)^I).specify (fun t ↦ ∃ x : ∀ i, X i, t = tuple x )
168
170
169
171
/-- Definition 3.5.6 -/
170
172
theorem SetTheory.Set.mem_iProd {I: Set} {X: I → Set} (t:Object) :
171
- t ∈ iProd X ↔ ∃ a : ∀ i, X i, t = tuple a := by
173
+ t ∈ iProd X ↔ ∃ x : ∀ i, X i, t = tuple x := by
172
174
simp only [iProd, specification_axiom'']; constructor
173
- . intro ⟨ ht, a , h ⟩; use a
174
- intro ⟨ a, ha ⟩
175
- have h : t ∈ (I.iUnion X)^I := by simp [ha ]
176
- use h, a
175
+ . intro ⟨ ht, x , h ⟩; use x
176
+ intro ⟨ x, hx ⟩
177
+ have h : t ∈ (I.iUnion X)^I := by simp [hx ]
178
+ use h, x
177
179
178
- theorem SetTheory.Set.tuple_mem_iProd {I: Set} {X: I → Set} (a : ∀ i, X i) :
179
- tuple a ∈ iProd X := by rw [mem_iProd]; use a
180
+ theorem SetTheory.Set.tuple_mem_iProd {I: Set} {X: I → Set} (x : ∀ i, X i) :
181
+ tuple x ∈ iProd X := by rw [mem_iProd]; use x
180
182
181
183
@[simp]
182
- theorem SetTheory.Set.tuple_inj {I:Set} {X: I → Set} (a b : ∀ i, X i) :
183
- tuple a = tuple b ↔ a = b := by sorry
184
+ theorem SetTheory.Set.tuple_inj {I:Set} {X: I → Set} (x y : ∀ i, X i) :
185
+ tuple x = tuple y ↔ x = y := by sorry
184
186
185
187
/-- Example 3.5.8. There is a bijection between `(X ×ˢ Y) ×ˢ Z` and `X ×ˢ (Y ×ˢ Z)`. -/
186
188
noncomputable abbrev SetTheory.Set.prod_associator (X Y Z:Set) : (X ×ˢ Y) ×ˢ Z ≃ X ×ˢ (Y ×ˢ Z) where
0 commit comments