Skip to content

Commit 2865aed

Browse files
committed
feat: multiplicative morphism properties (#6698)
This PR introduces the notion of multiplicative morphism property, i.e. contains identities and is stable under composition. Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>
1 parent cac4c90 commit 2865aed

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

Mathlib/CategoryTheory/MorphismProperty.lean

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,57 @@ theorem bijective_respectsIso : (MorphismProperty.bijective C).RespectsIso :=
695695

696696
end Bijective
697697

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+
698749
end MorphismProperty
699750

700751
end CategoryTheory

0 commit comments

Comments
 (0)