@@ -35,17 +35,17 @@ quotients as setoids whose equivalence classes are clopen.
35
35
The type `DiscreteQuotient X` is endowed with an instance of a `SemilatticeInf` with `OrderTop`.
36
36
The partial ordering `A ≤ B` mathematically means that `B.proj` factors through `A.proj`.
37
37
The top element `⊤` is the trivial quotient, meaning that every element of `X` is collapsed
38
- to a point. Given `h : A ≤ B`, the map `A → B` is `DiscreteQuotient.ofLe h`.
38
+ to a point. Given `h : A ≤ B`, the map `A → B` is `DiscreteQuotient.ofLE h`.
39
39
40
40
Whenever `X` is a locally connected space, the type `DiscreteQuotient X` is also endowed with an
41
41
instance of a `OrderBot`, where the bot element `⊥` is given by the `connectedComponentSetoid`,
42
42
i.e., `x ~ y` means that `x` and `y` belong to the same connected component. In particular, if `X`
43
43
is a discrete topological space, then `x ~ y` is equivalent (propositionally, not definitionally) to
44
44
`x = y`.
45
45
46
- Given `f : C(X, Y)`, we define a predicate `DiscreteQuotient.LeComap f A B` for `A :
46
+ Given `f : C(X, Y)`, we define a predicate `DiscreteQuotient.LEComap f A B` for `A :
47
47
DiscreteQuotient X` and `B : DiscreteQuotient Y`, asserting that `f` descends to `A → B`. If
48
- `cond : DiscreteQuotient.LeComap h A B`, the function `A → B` is obtained by
48
+ `cond : DiscreteQuotient.LEComap h A B`, the function `A → B` is obtained by
49
49
`DiscreteQuotient.map f cond`.
50
50
51
51
## Theorems
@@ -58,7 +58,7 @@ The two main results proved in this file are:
58
58
59
59
2. `DiscreteQuotient.exists_of_compat` which states that when `X` is compact, then any
60
60
system of elements of `Q` as `Q : DiscreteQuotient X` varies, which is compatible with
61
- respect to `DiscreteQuotient.ofLe `, must arise from some element of `X`.
61
+ respect to `DiscreteQuotient.ofLE `, must arise from some element of `X`.
62
62
63
63
## Remarks
64
64
The constructions in this file will be used to show that any profinite space is a limit
@@ -208,44 +208,44 @@ section OfLe
208
208
variable {A B C : DiscreteQuotient X}
209
209
210
210
/-- The map induced by a refinement of a discrete quotient. -/
211
- def ofLe (h : A ≤ B) : A → B :=
211
+ def ofLE (h : A ≤ B) : A → B :=
212
212
Quotient.map' (fun x => x) h
213
- #align discrete_quotient.of_le DiscreteQuotient.ofLe
213
+ #align discrete_quotient.of_le DiscreteQuotient.ofLE
214
214
215
215
@[simp]
216
- theorem ofLe_refl : ofLe (le_refl A) = id := by
216
+ theorem ofLE_refl : ofLE (le_refl A) = id := by
217
217
ext ⟨⟩
218
218
rfl
219
- #align discrete_quotient.of_le_refl DiscreteQuotient.ofLe_refl
219
+ #align discrete_quotient.of_le_refl DiscreteQuotient.ofLE_refl
220
220
221
- theorem ofLe_refl_apply (a : A) : ofLe (le_refl A) a = a := by simp
222
- #align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLe_refl_apply
221
+ theorem ofLE_refl_apply (a : A) : ofLE (le_refl A) a = a := by simp
222
+ #align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLE_refl_apply
223
223
224
224
@[simp]
225
- theorem ofLe_ofLe (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLe h₂ (ofLe h₁ x) = ofLe (h₁.trans h₂) x :=
225
+ theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x :=
226
226
by
227
227
rcases x with ⟨⟩
228
228
rfl
229
- #align discrete_quotient.of_le_of_le DiscreteQuotient.ofLe_ofLe
229
+ #align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLE
230
230
231
231
@[simp]
232
- theorem ofLe_comp_ofLe (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLe h₂ ∘ ofLe h₁ = ofLe (le_trans h₁ h₂) :=
233
- funext <| ofLe_ofLe _ _
234
- #align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLe_comp_ofLe
232
+ theorem ofLE_comp_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLE h₂ ∘ ofLE h₁ = ofLE (le_trans h₁ h₂) :=
233
+ funext <| ofLE_ofLE _ _
234
+ #align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLE
235
235
236
- theorem ofLe_continuous (h : A ≤ B) : Continuous (ofLe h) :=
236
+ theorem ofLE_continuous (h : A ≤ B) : Continuous (ofLE h) :=
237
237
continuous_of_discreteTopology
238
- #align discrete_quotient.of_le_continuous DiscreteQuotient.ofLe_continuous
238
+ #align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuous
239
239
240
240
@[simp]
241
- theorem ofLe_proj (h : A ≤ B) (x : X) : ofLe h (A.proj x) = B.proj x :=
241
+ theorem ofLE_proj (h : A ≤ B) (x : X) : ofLE h (A.proj x) = B.proj x :=
242
242
Quotient.sound' (B.refl _)
243
- #align discrete_quotient.of_le_proj DiscreteQuotient.ofLe_proj
243
+ #align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_proj
244
244
245
245
@[simp]
246
- theorem ofLe_comp_proj (h : A ≤ B) : ofLe h ∘ A.proj = B.proj :=
247
- funext <| ofLe_proj _
248
- #align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLe_comp_proj
246
+ theorem ofLE_comp_proj (h : A ≤ B) : ofLE h ∘ A.proj = B.proj :=
247
+ funext <| ofLE_proj _
248
+ #align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_proj
249
249
250
250
end OfLe
251
251
@@ -283,45 +283,45 @@ section Map
283
283
284
284
variable (f : C(X, Y)) (A A' : DiscreteQuotient X) (B B' : DiscreteQuotient Y)
285
285
286
- /-- Given `f : C(X, Y)`, `DiscreteQuotient.LeComap f A B` is defined as
286
+ /-- Given `f : C(X, Y)`, `DiscreteQuotient.LEComap f A B` is defined as
287
287
`A ≤ B.comap f`. Mathematically this means that `f` descends to a morphism `A → B`. -/
288
- def LeComap : Prop :=
288
+ def LEComap : Prop :=
289
289
A ≤ B.comap f
290
- #align discrete_quotient.le_comap DiscreteQuotient.LeComap
290
+ #align discrete_quotient.le_comap DiscreteQuotient.LEComap
291
291
292
- theorem leComap_id : LeComap (.id X) A A := le_rfl
292
+ theorem leComap_id : LEComap (.id X) A A := le_rfl
293
293
#align discrete_quotient.le_comap_id DiscreteQuotient.leComap_id
294
294
295
295
variable {A A' B B'} {f} {g : C(Y, Z)} {C : DiscreteQuotient Z}
296
296
297
297
@[simp]
298
- theorem leComap_id_iff : LeComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
298
+ theorem leComap_id_iff : LEComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
299
299
Iff.rfl
300
300
#align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iff
301
301
302
- theorem LeComap .comp : LeComap g B C → LeComap f A B → LeComap (g.comp f) A C := by tauto
303
- #align discrete_quotient.le_comap.comp DiscreteQuotient.LeComap .comp
302
+ theorem LEComap .comp : LEComap g B C → LEComap f A B → LEComap (g.comp f) A C := by tauto
303
+ #align discrete_quotient.le_comap.comp DiscreteQuotient.LEComap .comp
304
304
305
305
@[mono]
306
- theorem LeComap .mono (h : LeComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LeComap f A' B' :=
306
+ theorem LEComap .mono (h : LEComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LEComap f A' B' :=
307
307
hA.trans <| h.trans <| comap_mono _ hB
308
- #align discrete_quotient.le_comap.mono DiscreteQuotient.LeComap .mono
308
+ #align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap .mono
309
309
310
310
/-- Map a discrete quotient along a continuous map. -/
311
- def map (f : C(X, Y)) (cond : LeComap f A B) : A → B := Quotient.map' f cond
311
+ def map (f : C(X, Y)) (cond : LEComap f A B) : A → B := Quotient.map' f cond
312
312
#align discrete_quotient.map DiscreteQuotient.map
313
313
314
- theorem map_continuous (cond : LeComap f A B) : Continuous (map f cond) :=
314
+ theorem map_continuous (cond : LEComap f A B) : Continuous (map f cond) :=
315
315
continuous_of_discreteTopology
316
316
#align discrete_quotient.map_continuous DiscreteQuotient.map_continuous
317
317
318
318
@[simp]
319
- theorem map_comp_proj (cond : LeComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
319
+ theorem map_comp_proj (cond : LEComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
320
320
rfl
321
321
#align discrete_quotient.map_comp_proj DiscreteQuotient.map_comp_proj
322
322
323
323
@[simp]
324
- theorem map_proj (cond : LeComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
324
+ theorem map_proj (cond : LEComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
325
325
rfl
326
326
#align discrete_quotient.map_proj DiscreteQuotient.map_proj
327
327
@@ -330,37 +330,37 @@ theorem map_id : map _ (leComap_id A) = id := by ext ⟨⟩; rfl
330
330
#align discrete_quotient.map_id DiscreteQuotient.map_id
331
331
332
332
-- porting note: todo: figure out why `simpNF` says this is a bad `@[simp]` lemma
333
- theorem map_comp (h1 : LeComap g B C) (h2 : LeComap f A B) :
333
+ theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
334
334
map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 := by
335
335
ext ⟨⟩
336
336
rfl
337
337
#align discrete_quotient.map_comp DiscreteQuotient.map_comp
338
338
339
339
@[simp]
340
- theorem ofLe_map (cond : LeComap f A B) (h : B ≤ B') (a : A) :
341
- ofLe h (map f cond a) = map f (cond.mono le_rfl h) a := by
340
+ theorem ofLE_map (cond : LEComap f A B) (h : B ≤ B') (a : A) :
341
+ ofLE h (map f cond a) = map f (cond.mono le_rfl h) a := by
342
342
rcases a with ⟨⟩
343
343
rfl
344
- #align discrete_quotient.of_le_map DiscreteQuotient.ofLe_map
344
+ #align discrete_quotient.of_le_map DiscreteQuotient.ofLE_map
345
345
346
346
@[simp]
347
- theorem ofLe_comp_map (cond : LeComap f A B) (h : B ≤ B') :
348
- ofLe h ∘ map f cond = map f (cond.mono le_rfl h) :=
349
- funext <| ofLe_map cond h
350
- #align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLe_comp_map
347
+ theorem ofLE_comp_map (cond : LEComap f A B) (h : B ≤ B') :
348
+ ofLE h ∘ map f cond = map f (cond.mono le_rfl h) :=
349
+ funext <| ofLE_map cond h
350
+ #align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_map
351
351
352
352
@[simp]
353
- theorem map_ofLe (cond : LeComap f A B) (h : A' ≤ A) (c : A') :
354
- map f cond (ofLe h c) = map f (cond.mono h le_rfl) c := by
353
+ theorem map_ofLE (cond : LEComap f A B) (h : A' ≤ A) (c : A') :
354
+ map f cond (ofLE h c) = map f (cond.mono h le_rfl) c := by
355
355
rcases c with ⟨⟩
356
356
rfl
357
- #align discrete_quotient.map_of_le DiscreteQuotient.map_ofLe
357
+ #align discrete_quotient.map_of_le DiscreteQuotient.map_ofLE
358
358
359
359
@[simp]
360
- theorem map_comp_ofLe (cond : LeComap f A B) (h : A' ≤ A) :
361
- map f cond ∘ ofLe h = map f (cond.mono h le_rfl) :=
362
- funext <| map_ofLe cond h
363
- #align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLe
360
+ theorem map_comp_ofLE (cond : LEComap f A B) (h : A' ≤ A) :
361
+ map f cond ∘ ofLE h = map f (cond.mono h le_rfl) :=
362
+ funext <| map_ofLE cond h
363
+ #align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLE
364
364
365
365
end Map
366
366
@@ -372,19 +372,19 @@ theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconn
372
372
exact (Quotient.exact' (h (ofClopen hU1))).mpr hU2
373
373
#align discrete_quotient.eq_of_forall_proj_eq DiscreteQuotient.eq_of_forall_proj_eq
374
374
375
- theorem fiber_subset_ofLe {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
376
- A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLe h a} := by
375
+ theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
376
+ A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLE h a} := by
377
377
rcases A.proj_surjective a with ⟨a, rfl⟩
378
- rw [fiber_eq, ofLe_proj , fiber_eq]
378
+ rw [fiber_eq, ofLE_proj , fiber_eq]
379
379
exact fun _ h' => h h'
380
- #align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLe
380
+ #align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLE
381
381
382
382
theorem exists_of_compat [CompactSpace X] (Qs : (Q : DiscreteQuotient X) → Q)
383
- (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLe h (Qs _) = Qs _) :
383
+ (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLE h (Qs _) = Qs _) :
384
384
∃ x : X, ∀ Q : DiscreteQuotient X, Q.proj x = Qs _ := by
385
385
have H₁ : ∀ Q₁ Q₂, Q₁ ≤ Q₂ → proj Q₁ ⁻¹' {Qs Q₁} ⊆ proj Q₂ ⁻¹' {Qs Q₂} := fun _ _ h => by
386
386
rw [← compat _ _ h]
387
- exact fiber_subset_ofLe _ _
387
+ exact fiber_subset_ofLE _ _
388
388
obtain ⟨x, hx⟩ : Set.Nonempty (⋂ Q, proj Q ⁻¹' {Qs Q}) :=
389
389
IsCompact.nonempty_interᵢ_of_directed_nonempty_compact_closed
390
390
(fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_inf H₁)
0 commit comments