@@ -18,7 +18,7 @@ We construct limits and colimits in the opposite categories.
1818@[expose] public section
1919
2020
21- universe v₁ v₂ u₁ u₂
21+ universe w v₁ v₂ u₁ u₂
2222
2323noncomputable section
2424
@@ -509,12 +509,26 @@ theorem hasColimits_of_hasLimits_op [HasLimitsOfSize.{v₂, u₂} Cᵒᵖ] :
509509 HasColimitsOfSize.{v₂, u₂} C :=
510510 { has_colimits_of_shape := fun _ _ => hasColimitsOfShape_of_hasLimitsOfShape_op }
511511
512+ lemma hasColimitsOfSize_opposite_iff :
513+ HasColimitsOfSize.{v₂, u₂} Cᵒᵖ ↔ HasLimitsOfSize.{v₂, u₂} C :=
514+ ⟨fun _ ↦ hasLimits_of_hasColimits_op, fun _ ↦ inferInstance⟩
515+
516+ lemma hasLimitsOfSize_opposite_iff :
517+ HasLimitsOfSize.{v₂, u₂} Cᵒᵖ ↔ HasColimitsOfSize.{v₂, u₂} C :=
518+ ⟨fun _ ↦ hasColimits_of_hasLimits_op, fun _ ↦ inferInstance⟩
519+
512520instance hasFiniteColimits_opposite [HasFiniteLimits C] : HasFiniteColimits Cᵒᵖ :=
513521 ⟨fun _ _ _ => hasColimitsOfShape_op_of_hasLimitsOfShape⟩
514522
515523instance hasFiniteLimits_opposite [HasFiniteColimits C] : HasFiniteLimits Cᵒᵖ :=
516524 ⟨fun _ _ _ => hasLimitsOfShape_op_of_hasColimitsOfShape⟩
517525
526+ lemma hasFiniteLimits_opposite_iff : HasFiniteLimits Cᵒᵖ ↔ HasFiniteColimits C :=
527+ ⟨fun _ ↦ ⟨fun _ _ _ ↦ hasColimitsOfShape_of_hasLimitsOfShape_op⟩, fun _ ↦ inferInstance⟩
528+
529+ lemma hasFiniteColimits_opposite_iff : HasFiniteColimits Cᵒᵖ ↔ HasFiniteLimits C :=
530+ ⟨fun _ ↦ ⟨fun _ _ _ ↦ hasLimitsOfShape_of_hasColimitsOfShape_op⟩, fun _ ↦ inferInstance⟩
531+
518532lemma hasColimit_op_iff_hasLimit {F : J ⥤ C} : HasColimit F.op ↔ HasLimit F :=
519533 ⟨fun _ ↦ hasLimit_of_hasColimit_op F, fun _ ↦ inferInstance⟩
520534
@@ -533,4 +547,70 @@ lemma hasLimit_leftOp_iff_hasColimit {F : J ⥤ Cᵒᵖ} : HasLimit F.leftOp ↔
533547lemma hasLimit_rightOp_iff_hasColimit {F : Jᵒᵖ ⥤ C} : HasLimit F.rightOp ↔ HasColimit F :=
534548 ⟨fun _ ↦ hasColimit_of_hasLimit_rightOp F, fun _ ↦ inferInstance⟩
535549
550+ lemma hasLimitsOfShape_opposite_iff : HasLimitsOfShape J Cᵒᵖ ↔ HasColimitsOfShape Jᵒᵖ C := by
551+ refine ⟨fun _ ↦ ?_, fun _ ↦ inferInstance⟩
552+ have : HasLimitsOfShape Jᵒᵖᵒᵖ Cᵒᵖ := hasLimitsOfShape_of_equivalence (opOpEquivalence J).symm
553+ exact hasColimitsOfShape_of_hasLimitsOfShape_op
554+
555+ lemma hasColimitsOfShape_opposite_iff : HasColimitsOfShape J Cᵒᵖ ↔ HasLimitsOfShape Jᵒᵖ C := by
556+ refine ⟨fun _ ↦ ?_, fun _ ↦ inferInstance⟩
557+ have : HasColimitsOfShape Jᵒᵖᵒᵖ Cᵒᵖ := hasColimitsOfShape_of_equivalence (opOpEquivalence J).symm
558+ exact hasLimitsOfShape_of_hasColimitsOfShape_op
559+
560+ lemma hasLimitsOfShape_opposite_opposite_iff :
561+ HasLimitsOfShape Jᵒᵖ Cᵒᵖ ↔ HasColimitsOfShape J C := by
562+ refine ⟨fun _ ↦ hasColimitsOfShape_of_hasLimitsOfShape_op, fun _ ↦ ?_⟩
563+ have : HasColimitsOfShape Jᵒᵖᵒᵖ C := hasColimitsOfShape_of_equivalence (opOpEquivalence J).symm
564+ exact hasLimitsOfShape_op_of_hasColimitsOfShape
565+
566+ lemma hasColimitsOfShape_opposite_opposite_iff :
567+ HasColimitsOfShape Jᵒᵖ Cᵒᵖ ↔ HasLimitsOfShape J C := by
568+ refine ⟨fun _ ↦ hasLimitsOfShape_of_hasColimitsOfShape_op, fun _ ↦ ?_⟩
569+ have : HasLimitsOfShape Jᵒᵖᵒᵖ C := hasLimitsOfShape_of_equivalence (opOpEquivalence J).symm
570+ exact hasColimitsOfShape_op_of_hasLimitsOfShape
571+
572+ instance [HasWidePullbacks.{w} C] : HasWidePushouts.{w} Cᵒᵖ := by
573+ intro ι
574+ rw [hasColimitsOfShape_opposite_iff]
575+ exact hasLimitsOfShape_of_equivalence (widePushoutShapeOpEquiv _).symm
576+
577+ instance [HasWidePushouts.{w} C] : HasWidePullbacks.{w} Cᵒᵖ := by
578+ intro ι
579+ rw [hasLimitsOfShape_opposite_iff]
580+ exact hasColimitsOfShape_of_equivalence (widePullbackShapeOpEquiv _).symm
581+
582+ lemma hasWidePullbacks_opposite_iff :
583+ HasWidePullbacks.{w} Cᵒᵖ ↔ HasWidePushouts.{w} C := by
584+ refine ⟨fun h ι ↦ ?_, fun _ ↦ inferInstance⟩
585+ rw [← hasLimitsOfShape_opposite_opposite_iff]
586+ exact hasLimitsOfShape_of_equivalence (widePushoutShapeOpEquiv _).symm
587+
588+ lemma hasWidePushouts_opposite_iff :
589+ HasWidePushouts.{w} Cᵒᵖ ↔ HasWidePullbacks.{w} C := by
590+ refine ⟨fun h ι ↦ ?_, fun _ ↦ inferInstance⟩
591+ rw [← hasColimitsOfShape_opposite_opposite_iff]
592+ exact hasColimitsOfShape_of_equivalence (widePullbackShapeOpEquiv _).symm
593+
594+ instance [HasFiniteWidePullbacks C] : HasFiniteWidePushouts Cᵒᵖ := by
595+ refine ⟨fun J _ ↦ ?_⟩
596+ rw [hasColimitsOfShape_opposite_iff]
597+ exact hasLimitsOfShape_of_equivalence (widePushoutShapeOpEquiv _).symm
598+
599+ instance [HasFiniteWidePushouts C] : HasFiniteWidePullbacks Cᵒᵖ := by
600+ refine ⟨fun J _ ↦ ?_⟩
601+ rw [hasLimitsOfShape_opposite_iff]
602+ exact hasColimitsOfShape_of_equivalence (widePullbackShapeOpEquiv _).symm
603+
604+ lemma hasFiniteWidePullbacks_opposite_iff :
605+ HasFiniteWidePullbacks Cᵒᵖ ↔ HasFiniteWidePushouts C := by
606+ refine ⟨fun h ↦ ⟨fun J _ ↦ ?_⟩, fun _ ↦ inferInstance⟩
607+ rw [← hasLimitsOfShape_opposite_opposite_iff]
608+ exact hasLimitsOfShape_of_equivalence (widePushoutShapeOpEquiv _).symm
609+
610+ lemma hasFiniteWidePushouts_opposite_iff :
611+ HasFiniteWidePushouts Cᵒᵖ ↔ HasFiniteWidePullbacks C := by
612+ refine ⟨fun h ↦ ⟨fun J _ ↦ ?_⟩, fun _ ↦ inferInstance⟩
613+ rw [← hasColimitsOfShape_opposite_opposite_iff]
614+ exact hasColimitsOfShape_of_equivalence (widePullbackShapeOpEquiv _).symm
615+
536616end CategoryTheory.Limits
0 commit comments