@@ -313,7 +313,7 @@ abbrev mk (h : b ⟶ c) (counit : f ≫ h ⟶ g) : RightExtension f g :=
313313/-- To construct a morphism between right extensions, we need a 2-morphism between the extensions,
314314and to check that it is compatible with the counits. -/
315315abbrev homMk {s t : RightExtension f g} (η : s.extension ⟶ t.extension)
316- (w : f ◁ η ≫ t.counit = s.counit) : s ⟶ t :=
316+ (w : f ◁ η ≫ t.counit = s.counit := by cat_disch ) : s ⟶ t :=
317317 CostructuredArrow.homMk η w
318318
319319@ [reassoc (attr := simp)]
@@ -355,22 +355,100 @@ abbrev counit (t : RightLift f g) : t.lift ≫ f ⟶ g := t.hom
355355abbrev mk (h : c ⟶ b) (counit : h ≫ f ⟶ g) : RightLift f g :=
356356 CostructuredArrow.mk counit
357357
358+ variable {s t : RightLift f g}
359+
358360/-- To construct a morphism between right lifts, we need a 2-morphism between the lifts,
359361and to check that it is compatible with the counits. -/
360- abbrev homMk {s t : RightLift f g} (η : s.lift ⟶ t.lift) (w : η ▷ f ≫ t.counit = s.counit) :
362+ abbrev homMk (η : s.lift ⟶ t.lift) (w : η ▷ f ≫ t.counit = s.counit := by cat_disch ) :
361363 s ⟶ t :=
362364 CostructuredArrow.homMk η w
363365
364366@ [reassoc (attr := simp)]
365- theorem w {s t : RightLift f g} (h : s ⟶ t) :
366- h.left ▷ f ≫ t.counit = s.counit :=
367+ theorem w (h : s ⟶ t) : h.left ▷ f ≫ t.counit = s.counit :=
367368 CostructuredArrow.w h
368369
369370/-- The right lift along the identity. -/
370371def alongId (g : c ⟶ a) : RightLift (𝟙 a) g := .mk _ (ρ_ g).hom
371372
372373instance : Inhabited (RightLift (𝟙 a) g) := ⟨alongId g⟩
373374
375+ /-- Construct a right lift along `g : c ⟶ a` from a right lift along `𝟙 c ≫ g`. -/
376+ @[simps!]
377+ def ofIdComp (t : RightLift f (𝟙 c ≫ g)) : RightLift f g :=
378+ mk (lift t) (counit t ≫ (λ_ _).hom)
379+
380+ /-- Whisker a 1-morphism to a lift.
381+ ```
382+ b
383+ ◹ |
384+ lift / | | counit
385+ / | f ▽
386+ / ▽
387+ x - - - ▷ c - - - ▷ a
388+ h g
389+ ```
390+ -/
391+ def whisker (t : RightLift f g) {x : B} (h : x ⟶ c) : RightLift f (h ≫ g) :=
392+ .mk _ <| (α_ _ _ _).hom ≫ h ◁ t.counit
393+
394+ @[simp]
395+ theorem whisker_lift (t : RightLift f g) {x : B} (h : x ⟶ c) :
396+ (t.whisker h).lift = h ≫ t.lift :=
397+ rfl
398+
399+ @[simp]
400+ theorem whisker_counit (t : RightLift f g) {x : B} (h : x ⟶ c) :
401+ (t.whisker h).counit = (α_ h t.lift f).hom ≫ h ◁ t.counit :=
402+ rfl
403+
404+ /-- Whiskering a 1-morphism is a functor. -/
405+ @[simps]
406+ def whiskering {x : B} (h : x ⟶ c) : RightLift f g ⥤ RightLift f (h ≫ g) where
407+ obj t := t.whisker h
408+ map η := RightLift.homMk (h ◁ η.left) <| by
409+ dsimp only [whisker_lift, whisker_counit]
410+ rw [← RightLift.w η]
411+ simp [-RightLift.w]
412+
413+ set_option backward.isDefEq.respectTransparency false in
414+ /-- Define a morphism between right lifts by cancelling the whiskered identities. -/
415+ @ [simps! left]
416+ def whiskerIdCancel
417+ (t : RightLift f (𝟙 c ≫ g)) {s : RightLift f g} (τ : s.whisker (𝟙 c) ⟶ t) :
418+ s ⟶ t.ofIdComp :=
419+ RightLift.homMk ((λ_ _).inv ≫ τ.left)
420+
421+ set_option backward.isDefEq.respectTransparency false in
422+ /-- Construct a morphism between whiskered lifts. -/
423+ @ [simps! left]
424+ def whiskerHom (i : s ⟶ t) {x : B} (h : x ⟶ c) :
425+ s.whisker h ⟶ t.whisker h :=
426+ CostructuredArrow.homMk (h ◁ i.left) <| by
427+ rw [← cancel_epi (α_ h _ _).inv]
428+ calc
429+ _ = h ◁ (i.left ▷ f ≫ t.counit) := by simp [-RightLift.w]
430+ _ = h ◁ s.counit := congrArg (h ◁ ·) (RightLift.w i)
431+ _ = _ := by simp
432+
433+ /-- Construct an isomorphism between whiskered lifts. -/
434+ def whiskerIso (i : s ≅ t) {x : B} (h : x ⟶ c) :
435+ s.whisker h ≅ t.whisker h :=
436+ Iso.mk (whiskerHom i.hom h) (whiskerHom i.inv h)
437+ (CostructuredArrow.hom_ext _ _ <|
438+ calc
439+ _ = h ◁ (i.hom ≫ i.inv).left := by simp [-Iso.hom_inv_id]
440+ _ = 𝟙 _ := by simp [Iso.hom_inv_id])
441+ (CostructuredArrow.hom_ext _ _ <|
442+ calc
443+ _ = h ◁ (i.inv ≫ i.hom).left := by simp [-Iso.inv_hom_id]
444+ _ = 𝟙 _ := by simp [Iso.inv_hom_id])
445+
446+ set_option backward.defeqAttrib.useBackward true in
447+ /-- The isomorphism between right lifts induced by a left unitor. -/
448+ @ [simps! hom_left inv_left]
449+ def whiskerOfIdCompIsoSelf (t : RightLift f g) : (t.whisker (𝟙 c)).ofIdComp ≅ t :=
450+ CostructuredArrow.isoMk (λ_ (lift t))
451+
374452end RightLift
375453
376454end Bicategory
0 commit comments