@@ -103,8 +103,7 @@ instance (priority := 100) isFiltered_of_semilatticeSup_nonempty (α : Type u) [
103
103
#align category_theory.is_filtered_of_semilattice_sup_nonempty CategoryTheory.isFiltered_of_semilatticeSup_nonempty
104
104
105
105
instance (priority := 100 ) isFilteredOrEmpty_of_directed_le (α : Type u) [Preorder α]
106
- [IsDirected α (· ≤ ·)] : IsFilteredOrEmpty α
107
- where
106
+ [IsDirected α (· ≤ ·)] : IsFilteredOrEmpty α where
108
107
cocone_objs X Y :=
109
108
let ⟨Z, h1, h2⟩ := exists_ge_ge X Y
110
109
⟨Z, homOfLE h1, homOfLE h2, trivial⟩
@@ -154,41 +153,41 @@ noncomputable def max (j j' : C) : C :=
154
153
(IsFilteredOrEmpty.cocone_objs j j').choose
155
154
#align category_theory.is_filtered.max CategoryTheory.IsFiltered.max
156
155
157
- /-- `left_to_max j j'` is an arbitrary choice of morphism from `j` to `max j j'`,
158
- whose existence is ensured by `is_filtered `.
156
+ /-- `leftToMax j j'` is an arbitrary choice of morphism from `j` to `max j j'`,
157
+ whose existence is ensured by `IsFiltered `.
159
158
-/
160
159
noncomputable def leftToMax (j j' : C) : j ⟶ max j j' :=
161
160
(IsFilteredOrEmpty.cocone_objs j j').choose_spec.choose
162
161
#align category_theory.is_filtered.left_to_max CategoryTheory.IsFiltered.leftToMax
163
162
164
- /-- `right_to_max j j'` is an arbitrary choice of morphism from `j'` to `max j j'`,
165
- whose existence is ensured by `is_filtered `.
163
+ /-- `rightToMax j j'` is an arbitrary choice of morphism from `j'` to `max j j'`,
164
+ whose existence is ensured by `IsFiltered `.
166
165
-/
167
166
noncomputable def rightToMax (j j' : C) : j' ⟶ max j j' :=
168
167
(IsFilteredOrEmpty.cocone_objs j j').choose_spec.choose_spec.choose
169
168
#align category_theory.is_filtered.right_to_max CategoryTheory.IsFiltered.rightToMax
170
169
171
170
/-- `coeq f f'`, for morphisms `f f' : j ⟶ j'`, is an arbitrary choice of object
172
- which admits a morphism `coeq_hom f f' : j' ⟶ coeq f f'` such that
173
- `coeq_condition : f ≫ coeq_hom f f' = f' ≫ coeq_hom f f'`.
174
- Its existence is ensured by `is_filtered `.
171
+ which admits a morphism `coeqHom f f' : j' ⟶ coeq f f'` such that
172
+ `coeq_condition : f ≫ coeqHom f f' = f' ≫ coeqHom f f'`.
173
+ Its existence is ensured by `IsFiltered `.
175
174
-/
176
175
noncomputable def coeq {j j' : C} (f f' : j ⟶ j') : C :=
177
176
(IsFilteredOrEmpty.cocone_maps f f').choose
178
177
#align category_theory.is_filtered.coeq CategoryTheory.IsFiltered.coeq
179
178
180
- /-- `coeq_hom f f'`, for morphisms `f f' : j ⟶ j'`, is an arbitrary choice of morphism
181
- `coeq_hom f f' : j' ⟶ coeq f f'` such that
182
- `coeq_condition : f ≫ coeq_hom f f' = f' ≫ coeq_hom f f'`.
183
- Its existence is ensured by `is_filtered `.
179
+ /-- `coeqHom f f'`, for morphisms `f f' : j ⟶ j'`, is an arbitrary choice of morphism
180
+ `coeqHom f f' : j' ⟶ coeq f f'` such that
181
+ `coeq_condition : f ≫ coeqHom f f' = f' ≫ coeqHom f f'`.
182
+ Its existence is ensured by `IsFiltered `.
184
183
-/
185
184
noncomputable def coeqHom {j j' : C} (f f' : j ⟶ j') : j' ⟶ coeq f f' :=
186
185
(IsFilteredOrEmpty.cocone_maps f f').choose_spec.choose
187
186
#align category_theory.is_filtered.coeq_hom CategoryTheory.IsFiltered.coeqHom
188
187
189
188
-- porting note: the simp tag has been removed as the linter complained
190
189
/-- `coeq_condition f f'`, for morphisms `f f' : j ⟶ j'`, is the proof that
191
- `f ≫ coeq_hom f f' = f' ≫ coeq_hom f f'`.
190
+ `f ≫ coeqHom f f' = f' ≫ coeqHom f f'`.
192
191
-/
193
192
@[reassoc]
194
193
theorem coeq_condition {j j' : C} (f f' : j ⟶ j') : f ≫ coeqHom f f' = f' ≫ coeqHom f f' :=
@@ -280,7 +279,7 @@ theorem toSup_commutes {X Y : C} (mX : X ∈ O) (mY : Y ∈ O) {f : X ⟶ Y}
280
279
281
280
variable {J : Type v} [SmallCategory J] [FinCategory J]
282
281
283
- /-- If we have `is_filtered C`, then for any functor `F : J ⥤ C` with `fin_category J`,
282
+ /-- If we have `IsFiltered C`, then for any functor `F : J ⥤ C` with `FinCategory J`,
284
283
there exists a cocone over `F`.
285
284
-/
286
285
theorem cocone_nonempty (F : J ⥤ C) : _root_.Nonempty (Cocone F) := by
@@ -301,7 +300,7 @@ theorem cocone_nonempty (F : J ⥤ C) : _root_.Nonempty (Cocone F) := by
301
300
exact ⟨j, rfl, j', g, by simp⟩
302
301
#align category_theory.is_filtered.cocone_nonempty CategoryTheory.IsFiltered.cocone_nonempty
303
302
304
- /-- An arbitrary choice of cocone over `F : J ⥤ C`, for `fin_category J` and `is_filtered C`.
303
+ /-- An arbitrary choice of cocone over `F : J ⥤ C`, for `FinCategory J` and `IsFiltered C`.
305
304
-/
306
305
noncomputable def cocone (F : J ⥤ C) : Cocone F :=
307
306
(cocone_nonempty F).some
@@ -338,46 +337,46 @@ variable {C}
338
337
variable [IsFilteredOrEmpty C]
339
338
340
339
/-- `max₃ j₁ j₂ j₃` is an arbitrary choice of object to the right of `j₁`, `j₂` and `j₃`,
341
- whose existence is ensured by `is_filtered `.
340
+ whose existence is ensured by `IsFiltered `.
342
341
-/
343
342
noncomputable def max₃ (j₁ j₂ j₃ : C) : C :=
344
343
max (max j₁ j₂) j₃
345
344
#align category_theory.is_filtered.max₃ CategoryTheory.IsFiltered.max₃
346
345
347
- /-- `first_to_max ₃ j₁ j₂ j₃` is an arbitrary choice of morphism from `j₁` to `max₃ j₁ j₂ j₃`,
348
- whose existence is ensured by `is_filtered `.
346
+ /-- `firstToMax ₃ j₁ j₂ j₃` is an arbitrary choice of morphism from `j₁` to `max₃ j₁ j₂ j₃`,
347
+ whose existence is ensured by `IsFiltered `.
349
348
-/
350
349
noncomputable def firstToMax₃ (j₁ j₂ j₃ : C) : j₁ ⟶ max₃ j₁ j₂ j₃ :=
351
350
leftToMax j₁ j₂ ≫ leftToMax (max j₁ j₂) j₃
352
351
#align category_theory.is_filtered.first_to_max₃ CategoryTheory.IsFiltered.firstToMax₃
353
352
354
- /-- `second_to_max ₃ j₁ j₂ j₃` is an arbitrary choice of morphism from `j₂` to `max₃ j₁ j₂ j₃`,
355
- whose existence is ensured by `is_filtered `.
353
+ /-- `secondToMax ₃ j₁ j₂ j₃` is an arbitrary choice of morphism from `j₂` to `max₃ j₁ j₂ j₃`,
354
+ whose existence is ensured by `IsFiltered `.
356
355
-/
357
356
noncomputable def secondToMax₃ (j₁ j₂ j₃ : C) : j₂ ⟶ max₃ j₁ j₂ j₃ :=
358
357
rightToMax j₁ j₂ ≫ leftToMax (max j₁ j₂) j₃
359
358
#align category_theory.is_filtered.second_to_max₃ CategoryTheory.IsFiltered.secondToMax₃
360
359
361
- /-- `third_to_max ₃ j₁ j₂ j₃` is an arbitrary choice of morphism from `j₃` to `max₃ j₁ j₂ j₃`,
362
- whose existence is ensured by `is_filtered `.
360
+ /-- `thirdToMax ₃ j₁ j₂ j₃` is an arbitrary choice of morphism from `j₃` to `max₃ j₁ j₂ j₃`,
361
+ whose existence is ensured by `IsFiltered `.
363
362
-/
364
363
noncomputable def thirdToMax₃ (j₁ j₂ j₃ : C) : j₃ ⟶ max₃ j₁ j₂ j₃ :=
365
364
rightToMax (max j₁ j₂) j₃
366
365
#align category_theory.is_filtered.third_to_max₃ CategoryTheory.IsFiltered.thirdToMax₃
367
366
368
367
/-- `coeq₃ f g h`, for morphisms `f g h : j₁ ⟶ j₂`, is an arbitrary choice of object
369
- which admits a morphism `coeq₃_hom f g h : j₂ ⟶ coeq₃ f g h` such that
368
+ which admits a morphism `coeq₃Hom f g h : j₂ ⟶ coeq₃ f g h` such that
370
369
`coeq₃_condition₁`, `coeq₃_condition₂` and `coeq₃_condition₃` are satisfied.
371
- Its existence is ensured by `is_filtered `.
370
+ Its existence is ensured by `IsFiltered `.
372
371
-/
373
372
noncomputable def coeq₃ {j₁ j₂ : C} (f g h : j₁ ⟶ j₂) : C :=
374
373
coeq (coeqHom f g ≫ leftToMax (coeq f g) (coeq g h))
375
374
(coeqHom g h ≫ rightToMax (coeq f g) (coeq g h))
376
375
#align category_theory.is_filtered.coeq₃ CategoryTheory.IsFiltered.coeq₃
377
376
378
- /-- `coeq₃_hom f g h`, for morphisms `f g h : j₁ ⟶ j₂`, is an arbitrary choice of morphism
377
+ /-- `coeq₃Hom f g h`, for morphisms `f g h : j₁ ⟶ j₂`, is an arbitrary choice of morphism
379
378
`j₂ ⟶ coeq₃ f g h` such that `coeq₃_condition₁`, `coeq₃_condition₂` and `coeq₃_condition₃`
380
- are satisfied. Its existence is ensured by `is_filtered `.
379
+ are satisfied. Its existence is ensured by `IsFiltered `.
381
380
-/
382
381
noncomputable def coeq₃Hom {j₁ j₂ : C} (f g h : j₁ ⟶ j₂) : j₂ ⟶ coeq₃ f g h :=
383
382
coeqHom f g ≫
@@ -464,7 +463,7 @@ end SpecialShapes
464
463
465
464
end IsFiltered
466
465
467
- /-- A category `is_cofiltered_or_empty ` if
466
+ /-- A category `IsCofilteredOrEmpty ` if
468
467
1. for every pair of objects there exists another object "to the left", and
469
468
2. for every pair of parallel morphisms there exists a morphism to the left so the compositions
470
469
are equal.
@@ -477,7 +476,7 @@ class IsCofilteredOrEmpty : Prop where
477
476
cone_maps : ∀ ⦃X Y : C⦄ (f g : X ⟶ Y), ∃ (W : _)(h : W ⟶ X), h ≫ f = h ≫ g
478
477
#align category_theory.is_cofiltered_or_empty CategoryTheory.IsCofilteredOrEmpty
479
478
480
- /-- A category `is_cofiltered ` if
479
+ /-- A category `IsCofiltered ` if
481
480
1. for every pair of objects there exists another object "to the left",
482
481
2. for every pair of parallel morphisms there exists a morphism to the left so the compositions
483
482
are equal, and
@@ -491,8 +490,7 @@ class IsCofiltered extends IsCofilteredOrEmpty C : Prop where
491
490
#align category_theory.is_cofiltered CategoryTheory.IsCofiltered
492
491
493
492
instance (priority := 100 ) isCofilteredOrEmpty_of_semilatticeInf (α : Type u) [SemilatticeInf α] :
494
- IsCofilteredOrEmpty α
495
- where
493
+ IsCofilteredOrEmpty α where
496
494
cone_objs X Y := ⟨X ⊓ Y, homOfLE inf_le_left, homOfLE inf_le_right, trivial⟩
497
495
cone_maps X Y f g := ⟨X, 𝟙 _, by
498
496
apply ULift.ext
@@ -504,8 +502,7 @@ instance (priority := 100) isCofiltered_of_semilatticeInf_nonempty (α : Type u)
504
502
#align category_theory.is_cofiltered_of_semilattice_inf_nonempty CategoryTheory.isCofiltered_of_semilatticeInf_nonempty
505
503
506
504
instance (priority := 100 ) isCofilteredOrEmpty_of_directed_ge (α : Type u) [Preorder α]
507
- [IsDirected α (· ≥ ·)] : IsCofilteredOrEmpty α
508
- where
505
+ [IsDirected α (· ≥ ·)] : IsCofilteredOrEmpty α where
509
506
cone_objs X Y :=
510
507
let ⟨Z, hX, hY⟩ := exists_le_le X Y
511
508
⟨Z, homOfLE hX, homOfLE hY, trivial⟩
@@ -523,8 +520,7 @@ example (α : Type u) [SemilatticeInf α] [OrderBot α] : IsCofiltered α := by
523
520
524
521
example (α : Type u) [SemilatticeInf α] [OrderTop α] : IsCofiltered α := by infer_instance
525
522
526
- instance : IsCofiltered (Discrete PUnit)
527
- where
523
+ instance : IsCofiltered (Discrete PUnit) where
528
524
cone_objs X Y := ⟨⟨PUnit.unit⟩, ⟨⟨by trivial⟩⟩, ⟨⟨Subsingleton.elim _ _⟩⟩, trivial⟩
529
525
cone_maps X Y f g := ⟨⟨PUnit.unit⟩, ⟨⟨by trivial⟩⟩, by
530
526
apply ULift.ext
@@ -550,47 +546,47 @@ variable [IsCofilteredOrEmpty C]
550
546
--#align category_theory.is_cofiltered.cone_maps CategoryTheory.IsCofiltered.cone_maps
551
547
552
548
/-- `min j j'` is an arbitrary choice of object to the left of both `j` and `j'`,
553
- whose existence is ensured by `is_cofiltered `.
549
+ whose existence is ensured by `IsCofiltered `.
554
550
-/
555
551
noncomputable def min (j j' : C) : C :=
556
552
(IsCofilteredOrEmpty.cone_objs j j').choose
557
553
#align category_theory.is_cofiltered.min CategoryTheory.IsCofiltered.min
558
554
559
555
/-- `min_to_left j j'` is an arbitrary choice of morphism from `min j j'` to `j`,
560
- whose existence is ensured by `is_cofiltered `.
556
+ whose existence is ensured by `IsCofiltered `.
561
557
-/
562
558
noncomputable def minToLeft (j j' : C) : min j j' ⟶ j :=
563
559
(IsCofilteredOrEmpty.cone_objs j j').choose_spec.choose
564
560
#align category_theory.is_cofiltered.min_to_left CategoryTheory.IsCofiltered.minToLeft
565
561
566
562
/-- `min_to_right j j'` is an arbitrary choice of morphism from `min j j'` to `j'`,
567
- whose existence is ensured by `is_cofiltered `.
563
+ whose existence is ensured by `IsCofiltered `.
568
564
-/
569
565
noncomputable def minToRight (j j' : C) : min j j' ⟶ j' :=
570
566
(IsCofilteredOrEmpty.cone_objs j j').choose_spec.choose_spec.choose
571
567
#align category_theory.is_cofiltered.min_to_right CategoryTheory.IsCofiltered.minToRight
572
568
573
569
/-- `eq f f'`, for morphisms `f f' : j ⟶ j'`, is an arbitrary choice of object
574
- which admits a morphism `eq_hom f f' : eq f f' ⟶ j` such that
575
- `eq_condition : eq_hom f f' ≫ f = eq_hom f f' ≫ f'`.
576
- Its existence is ensured by `is_cofiltered `.
570
+ which admits a morphism `eqHom f f' : eq f f' ⟶ j` such that
571
+ `eq_condition : eqHom f f' ≫ f = eqHom f f' ≫ f'`.
572
+ Its existence is ensured by `IsCofiltered `.
577
573
-/
578
574
noncomputable def eq {j j' : C} (f f' : j ⟶ j') : C :=
579
575
(IsCofilteredOrEmpty.cone_maps f f').choose
580
576
#align category_theory.is_cofiltered.eq CategoryTheory.IsCofiltered.eq
581
577
582
- /-- `eq_hom f f'`, for morphisms `f f' : j ⟶ j'`, is an arbitrary choice of morphism
583
- `eq_hom f f' : eq f f' ⟶ j` such that
584
- `eq_condition : eq_hom f f' ≫ f = eq_hom f f' ≫ f'`.
585
- Its existence is ensured by `is_cofiltered `.
578
+ /-- `eqHom f f'`, for morphisms `f f' : j ⟶ j'`, is an arbitrary choice of morphism
579
+ `eqHom f f' : eq f f' ⟶ j` such that
580
+ `eq_condition : eqHom f f' ≫ f = eqHom f f' ≫ f'`.
581
+ Its existence is ensured by `IsCofiltered `.
586
582
-/
587
583
noncomputable def eqHom {j j' : C} (f f' : j ⟶ j') : eq f f' ⟶ j :=
588
584
(IsCofilteredOrEmpty.cone_maps f f').choose_spec.choose
589
585
#align category_theory.is_cofiltered.eq_hom CategoryTheory.IsCofiltered.eqHom
590
586
591
587
-- porting note: the simp tag has been removed as the linter complained
592
588
/-- `eq_condition f f'`, for morphisms `f f' : j ⟶ j'`, is the proof that
593
- `eq_hom f f' ≫ f = eq_hom f f' ≫ f'`.
589
+ `eqHom f f' ≫ f = eqHom f f' ≫ f'`.
594
590
-/
595
591
@[reassoc]
596
592
theorem eq_condition {j j' : C} (f f' : j ⟶ j') : eqHom f f' ≫ f = eqHom f f' ≫ f' :=
@@ -697,7 +693,7 @@ theorem infTo_commutes {X Y : C} (mX : X ∈ O) (mY : Y ∈ O) {f : X ⟶ Y}
697
693
698
694
variable {J : Type w} [SmallCategory J] [FinCategory J]
699
695
700
- /-- If we have `is_cofiltered C`, then for any functor `F : J ⥤ C` with `fin_category J`,
696
+ /-- If we have `IsCofiltered C`, then for any functor `F : J ⥤ C` with `FinCategory J`,
701
697
there exists a cone over `F`.
702
698
-/
703
699
theorem cone_nonempty (F : J ⥤ C) : _root_.Nonempty (Cone F) := by
@@ -719,7 +715,7 @@ theorem cone_nonempty (F : J ⥤ C) : _root_.Nonempty (Cone F) := by
719
715
exact ⟨j, rfl, j', g, by simp⟩
720
716
#align category_theory.is_cofiltered.cone_nonempty CategoryTheory.IsCofiltered.cone_nonempty
721
717
722
- /-- An arbitrary choice of cone over `F : J ⥤ C`, for `fin_category J` and `is_cofiltered C`.
718
+ /-- An arbitrary choice of cone over `F : J ⥤ C`, for `FinCategory J` and `IsCofiltered C`.
723
719
-/
724
720
noncomputable def cone (F : J ⥤ C) : Cone F :=
725
721
(cone_nonempty F).some
@@ -758,28 +754,24 @@ section Opposite
758
754
759
755
open Opposite
760
756
761
- instance isCofiltered_op_of_isFiltered [IsFiltered C] : IsCofiltered Cᵒᵖ
762
- where
757
+ instance isCofiltered_op_of_isFiltered [IsFiltered C] : IsCofiltered Cᵒᵖ where
763
758
cone_objs X Y :=
764
759
⟨op (IsFiltered.max X.unop Y.unop), (IsFiltered.leftToMax _ _).op,
765
760
(IsFiltered.rightToMax _ _).op, trivial⟩
766
761
cone_maps X Y f g :=
767
- ⟨op (IsFiltered.coeq f.unop g.unop), (IsFiltered.coeqHom _ _).op,
768
- by
762
+ ⟨op (IsFiltered.coeq f.unop g.unop), (IsFiltered.coeqHom _ _).op, by
769
763
rw [show f = f.unop.op by simp, show g = g.unop.op by simp, ← op_comp, ← op_comp]
770
764
congr 1
771
765
exact IsFiltered.coeq_condition f.unop g.unop⟩
772
766
Nonempty := ⟨op IsFiltered.Nonempty.some⟩
773
767
#align category_theory.is_cofiltered_op_of_is_filtered CategoryTheory.isCofiltered_op_of_isFiltered
774
768
775
- instance isFiltered_op_of_isCofiltered [IsCofiltered C] : IsFiltered Cᵒᵖ
776
- where
769
+ instance isFiltered_op_of_isCofiltered [IsCofiltered C] : IsFiltered Cᵒᵖ where
777
770
cocone_objs X Y :=
778
771
⟨op (IsCofiltered.min X.unop Y.unop), (IsCofiltered.minToLeft X.unop Y.unop).op,
779
772
(IsCofiltered.minToRight X.unop Y.unop).op, trivial⟩
780
773
cocone_maps X Y f g :=
781
- ⟨op (IsCofiltered.eq f.unop g.unop), (IsCofiltered.eqHom f.unop g.unop).op,
782
- by
774
+ ⟨op (IsCofiltered.eq f.unop g.unop), (IsCofiltered.eqHom f.unop g.unop).op, by
783
775
rw [show f = f.unop.op by simp, show g = g.unop.op by simp, ← op_comp, ← op_comp]
784
776
congr 1
785
777
exact IsCofiltered.eq_condition f.unop g.unop⟩
0 commit comments