@@ -695,6 +695,57 @@ theorem bijective_respectsIso : (MorphismProperty.bijective C).RespectsIso :=
695
695
696
696
end Bijective
697
697
698
+ /-- Typeclass expressing that a morphism property contain identities. -/
699
+ class ContainsIdentities (W : MorphismProperty C) : Prop :=
700
+ /-- for all `X : C`, the identity of `X` satisfies the morphism property -/
701
+ id_mem' : ∀ (X : C), W (𝟙 X)
702
+
703
+ lemma id_mem (W : MorphismProperty C) [W.ContainsIdentities] (X : C) :
704
+ W (𝟙 X) := ContainsIdentities.id_mem' X
705
+
706
+ namespace ContainsIdentities
707
+
708
+ instance op (W : MorphismProperty C) [W.ContainsIdentities] :
709
+ W.op.ContainsIdentities := ⟨fun X => W.id_mem X.unop⟩
710
+
711
+ instance unop (W : MorphismProperty Cᵒᵖ) [W.ContainsIdentities] :
712
+ W.unop.ContainsIdentities := ⟨fun X => W.id_mem (Opposite.op X)⟩
713
+
714
+ lemma of_op (W : MorphismProperty C) [W.op.ContainsIdentities] :
715
+ W.ContainsIdentities := (inferInstance : W.op.unop.ContainsIdentities)
716
+
717
+ lemma of_unop (W : MorphismProperty Cᵒᵖ) [W.unop.ContainsIdentities] :
718
+ W.ContainsIdentities := (inferInstance : W.unop.op.ContainsIdentities)
719
+
720
+ end ContainsIdentities
721
+
722
+ /-- A morphism property is multiplicative if it contains identities and is stable by
723
+ composition. -/
724
+ class IsMultiplicative (W : MorphismProperty C) extends W.ContainsIdentities : Prop :=
725
+ /-- compatibility of -/
726
+ stableUnderComposition : W.StableUnderComposition
727
+
728
+ lemma comp_mem (W : MorphismProperty C) {X Y Z : C} (f : X ⟶ Y) (g : Y ⟶ Z) (hf : W f) (hg : W g)
729
+ [IsMultiplicative W] : W (f ≫ g) :=
730
+ IsMultiplicative.stableUnderComposition f g hf hg
731
+
732
+ namespace IsMultiplicative
733
+
734
+ instance op (W : MorphismProperty C) [IsMultiplicative W] : IsMultiplicative W.op where
735
+ stableUnderComposition := fun _ _ _ f g hf hg => W.comp_mem g.unop f.unop hg hf
736
+
737
+ instance unop (W : MorphismProperty Cᵒᵖ) [IsMultiplicative W] : IsMultiplicative W.unop where
738
+ id_mem' _ := W.id_mem _
739
+ stableUnderComposition := fun _ _ _ f g hf hg => W.comp_mem g.op f.op hg hf
740
+
741
+ lemma of_op (W : MorphismProperty C) [IsMultiplicative W.op] : IsMultiplicative W :=
742
+ (inferInstance : IsMultiplicative W.op.unop)
743
+
744
+ lemma of_unop (W : MorphismProperty Cᵒᵖ) [IsMultiplicative W.unop] : IsMultiplicative W :=
745
+ (inferInstance : IsMultiplicative W.unop.op)
746
+
747
+ end IsMultiplicative
748
+
698
749
end MorphismProperty
699
750
700
751
end CategoryTheory
0 commit comments