File: Mathlib/CategoryTheory/Shift/Quotient.lean

full_name: HomRel.IsCompatibleWithShift
code: /-- A relation on morphisms is compatible with the shift by a monoid `A` when the
relation if preserved by the shift. -/
class IsCompatibleWithShift : Prop :=
  /-- the condition that the relation is preserved by the shift -/
  condition : ∀ (a : A) ⦃X Y : C⦄ (f g : X ⟶ Y), r f g → r (f⟦a⟧') (g⟦a⟧')
goal: Prop

full_name: HomRel.IsCompatibleWithShift.condition
code: /-- A relation on morphisms is compatible with the shift by a monoid `A` when the
relation if preserved by the shift. -/
class IsCompatibleWithShift : Prop :=
  /-- the condition that the relation is preserved by the shift -/
  condition : ∀ (a : A) ⦃X Y : C⦄ (f g : X ⟶ Y), r f g → r (f⟦a⟧') (g⟦a⟧')
goal: r f g → r ((CategoryTheory.shiftFunctor C a).map f) ((CategoryTheory.shiftFunctor C a).map g)

full_name: CategoryTheory.HasShift.quotient
code: /-- The shift by a monoid `A` induced on a quotient category `Quotient r` when the
relation `r` is compatible with the shift. -/
noncomputable instance HasShift.quotient [r.IsCompatibleWithShift A] :
    HasShift (Quotient r) A 
goal: CategoryTheory.HasShift (CategoryTheory.Quotient r) A

full_name: CategoryTheory.Quotient.functor_commShift
code: /-- The functor `Quotient.functor r : C ⥤ Quotient r` commutes with the shift. -/
noncomputable instance Quotient.functor_commShift [r.IsCompatibleWithShift A] :
    (Quotient.functor r).CommShift A 
goal: (CategoryTheory.Quotient.functor r).CommShift A

full_name: CategoryTheory.Quotient.LiftCommShift.iso
code: /-- Auxiliary definition for `Quotient.liftCommShift`. -/
noncomputable def iso (a : A) :
    shiftFunctor (Quotient r) a ⋙ lift r F hF ≅ lift r F hF ⋙ shiftFunctor D a 
goal: CategoryTheory.shiftFunctor (CategoryTheory.Quotient r) a ⋙ CategoryTheory.Quotient.lift r F hF ≅
  CategoryTheory.Quotient.lift r F hF ⋙ CategoryTheory.shiftFunctor D a

full_name: CategoryTheory.Quotient.LiftCommShift.iso_hom_app
code: @[simp]
lemma iso_hom_app (a : A) (X : C) :
    (iso F r hF a).hom.app ((functor r).obj X) =
      (lift r F hF).map (((functor r).commShiftIso a).inv.app X) ≫
      (F.commShiftIso a).hom.app X 
goal: (CategoryTheory.Quotient.LiftCommShift.iso F r hF a).hom.app ((CategoryTheory.Quotient.functor r).obj X) =
  (CategoryTheory.Quotient.lift r F hF).map (((CategoryTheory.Quotient.functor r).commShiftIso a).inv.app X) ≫
    (F.commShiftIso a).hom.app X

full_name: CategoryTheory.Quotient.LiftCommShift.iso_inv_app
code: @[simp]
lemma iso_inv_app (a : A) (X : C) :
    (iso F r hF a).inv.app ((functor r).obj X) =
      (F.commShiftIso a).inv.app X ≫
      (lift r F hF).map (((functor r).commShiftIso a).hom.app X) 
goal: (CategoryTheory.Quotient.LiftCommShift.iso F r hF a).inv.app ((CategoryTheory.Quotient.functor r).obj X) =
  (F.commShiftIso a).inv.app X ≫
    (CategoryTheory.Quotient.lift r F hF).map (((CategoryTheory.Quotient.functor r).commShiftIso a).hom.app X)

full_name: CategoryTheory.Quotient.liftCommShift
code: /-- When `r : HomRel C` is compatible with the shift by an additive monoid, and
`F : C ⥤ D` is a functor which commutes with the shift and is compatible with `r`, then
the induced functor `Quotient.lift r F _ : Quotient r ⥤ D` also commutes with the shift. -/
noncomputable instance liftCommShift :
    (Quotient.lift r F hF).CommShift A 
goal: (CategoryTheory.Quotient.lift r F hF).CommShift A

full_name: CategoryTheory.Quotient.liftCommShift_compatibility
code: instance liftCommShift_compatibility :
    NatTrans.CommShift (Quotient.lift.isLift r F hF).hom A 
goal: CategoryTheory.NatTrans.CommShift (CategoryTheory.Quotient.lift.isLift r F hF).hom A