Skip to content

Commit 36df19c

Browse files
committed
feat(CategoryTheory/Localization): inverse in SmallShiftedHom (#32442)
The post/precomposition on the types `SmallShiftedHom W` with a morphism which satisfies `W` is a bijection.
1 parent c31d2fb commit 36df19c

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

Mathlib/CategoryTheory/Localization/SmallShiftedHom.lean

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,14 @@ noncomputable def mk₀ [HasSmallLocalizedShiftedHom.{w} W M X Y]
162162
SmallShiftedHom.{w} W X Y m₀ :=
163163
SmallShiftedHom.mk _ (ShiftedHom.mk₀ _ hm₀ f)
164164

165+
/-- The formal inverse in `SmallShiftedHom.{w} W Y X m₀` of a morphism `f : Y ⟶ X`
166+
such that `W f`. -/
167+
noncomputable def mk₀Inv [HasSmallLocalizedShiftedHom.{w} W M Y X] [W.RespectsIso]
168+
(m₀ : M) (hm₀ : m₀ = 0) (f : X ⟶ Y) (hf : W f) :
169+
SmallShiftedHom.{w} W Y X m₀ :=
170+
SmallHom.mkInv ((shiftFunctorZero' C m₀ hm₀).hom.app X ≫ f)
171+
(MorphismProperty.RespectsIso.precomp _ _ _ hf)
172+
165173
end
166174

167175
section
@@ -236,6 +244,17 @@ lemma equiv_mk₀ [HasSmallLocalizedShiftedHom.{w} W M X Y]
236244
simp only [comp_id, L.commShiftIso_zero, Functor.CommShift.isoZero_hom_app, assoc,
237245
← Functor.map_comp_assoc, Iso.inv_hom_id_app, Functor.id_obj, Functor.map_id, id_comp]
238246

247+
@[simp]
248+
lemma equiv_mk₀Inv [HasSmallLocalizedShiftedHom.{w} W M Y X] [W.RespectsIso]
249+
(m₀ : M) (hm₀ : m₀ = 0) (f : X ⟶ Y) (hf : W f) :
250+
equiv W L (mk₀Inv m₀ hm₀ f hf) =
251+
ShiftedHom.mk₀ m₀ hm₀ ((isoOfHom L W f hf).inv) := by
252+
have hf' : W ((shiftFunctorZero' C m₀ hm₀).hom.app X ≫ f) :=
253+
MorphismProperty.RespectsIso.precomp _ _ _ hf
254+
refine (SmallHom.equiv_mkInv L _ hf' =≫ _).trans ?_
255+
rw [← cancel_epi (isoOfHom L W _ hf').hom, Iso.hom_inv_id_assoc]
256+
simp [ShiftedHom.mk₀, Functor.commShiftIso_zero' _ _ m₀ hm₀]
257+
239258
end
240259

241260
section
@@ -257,6 +276,84 @@ lemma comp_assoc {X Y Z T : C} {a₁ a₂ a₃ a₁₂ a₂₃ a : M}
257276

258277
end
259278

279+
variable {W} in
280+
@[simp]
281+
lemma mk₀_comp_mk₀Inv {X Y : C} [HasSmallLocalizedShiftedHom.{w} W M X Y]
282+
[HasSmallLocalizedShiftedHom.{w} W M Y Y]
283+
[HasSmallLocalizedShiftedHom.{w} W M Y X] [W.IsCompatibleWithShift M] [W.RespectsIso]
284+
(m₀ : M) (hm₀ : m₀ = 0) (f : Y ⟶ X) (hf : W f) :
285+
(mk₀ W m₀ hm₀ f).comp (mk₀Inv m₀ hm₀ f hf) (by subst hm₀; simp) =
286+
mk₀ W m₀ hm₀ (𝟙 Y) :=
287+
(equiv W W.Q).injective (by simp [equiv_comp])
288+
289+
variable {W} in
290+
@[simp]
291+
lemma mk₀Inv_comp_mk₀ {X Y : C} [HasSmallLocalizedShiftedHom.{w} W M X Y]
292+
[HasSmallLocalizedShiftedHom.{w} W M X X]
293+
[HasSmallLocalizedShiftedHom.{w} W M Y X] [W.IsCompatibleWithShift M] [W.RespectsIso]
294+
(m₀ : M) (hm₀ : m₀ = 0) (f : Y ⟶ X) (hf : W f) :
295+
(mk₀Inv m₀ hm₀ f hf).comp (mk₀ W m₀ hm₀ f) (by subst hm₀; simp) =
296+
mk₀ W m₀ hm₀ (𝟙 X) :=
297+
(equiv W W.Q).injective (by simp [equiv_comp])
298+
299+
variable {W} in
300+
@[simp]
301+
lemma comp_mk₀_id {X Y : C} [HasSmallLocalizedShiftedHom.{w} W M X Y]
302+
[HasSmallLocalizedShiftedHom.{w} W M Y Y]
303+
[W.IsCompatibleWithShift M] {m : M}
304+
(α : SmallShiftedHom.{w} W X Y m) (m₀ : M) (hm₀ : m₀ = 0) :
305+
α.comp (mk₀ W m₀ hm₀ (𝟙 Y)) (by aesop) = α :=
306+
(equiv W W.Q).injective (by simp [equiv_comp])
307+
308+
variable {W} in
309+
@[simp]
310+
lemma mk₀_id_comp {X Y : C} [HasSmallLocalizedShiftedHom.{w} W M X Y]
311+
[HasSmallLocalizedShiftedHom.{w} W M X X]
312+
[HasSmallLocalizedShiftedHom.{w} W M Y Y]
313+
[W.IsCompatibleWithShift M] {m : M}
314+
(α : SmallShiftedHom.{w} W X Y m) (m₀ : M) (hm₀ : m₀ = 0) :
315+
(mk₀ W m₀ hm₀ (𝟙 X)).comp α (by aesop) = α :=
316+
(equiv W W.Q).injective (by simp [equiv_comp])
317+
318+
variable {W} in
319+
/-- The postcomposition on the types `SmallShiftedHom W` with a morphism
320+
which satisfies `W` is a bijection. -/
321+
@[simps!]
322+
noncomputable def postcompEquiv {X Y Z : C}
323+
[W.RespectsIso] [W.IsCompatibleWithShift M]
324+
[HasSmallLocalizedShiftedHom.{w} W M X Y]
325+
[HasSmallLocalizedShiftedHom.{w} W M Y Z]
326+
[HasSmallLocalizedShiftedHom.{w} W M X Z]
327+
[HasSmallLocalizedShiftedHom.{w} W M Z Y]
328+
[HasSmallLocalizedShiftedHom.{w} W M Y Y]
329+
[HasSmallLocalizedShiftedHom.{w} W M Z Z]
330+
(f : Y ⟶ Z) (hf : W f) {a : M} :
331+
SmallShiftedHom.{w} W X Y a ≃ SmallShiftedHom.{w} W X Z a where
332+
toFun α := α.comp (mk₀ _ _ rfl f) (zero_add _)
333+
invFun β := β.comp (mk₀Inv _ rfl _ hf) (zero_add _)
334+
left_inv α := by simp [comp_assoc]
335+
right_inv β := by simp [comp_assoc]
336+
337+
variable {W} in
338+
/-- The precomposition on the types `SmallShiftedHom W` with a morphism
339+
which satisfies `W` is a bijection. -/
340+
@[simps!]
341+
noncomputable def precompEquiv {X Y Z : C}
342+
[W.RespectsIso] [W.IsCompatibleWithShift M]
343+
[HasSmallLocalizedShiftedHom.{w} W M X X]
344+
[HasSmallLocalizedShiftedHom.{w} W M Y Y]
345+
[HasSmallLocalizedShiftedHom.{w} W M X Y]
346+
[HasSmallLocalizedShiftedHom.{w} W M Y X]
347+
[HasSmallLocalizedShiftedHom.{w} W M Y Z]
348+
[HasSmallLocalizedShiftedHom.{w} W M X Z]
349+
[HasSmallLocalizedShiftedHom.{w} W M Z Z]
350+
(f : X ⟶ Y) (hf : W f) {a : M} :
351+
SmallShiftedHom.{w} W Y Z a ≃ SmallShiftedHom.{w} W X Z a where
352+
toFun α := (mk₀ _ _ rfl f).comp α (add_zero _)
353+
invFun β := (mk₀Inv _ rfl _ hf).comp β (add_zero _)
354+
left_inv α := by simp [← comp_assoc]
355+
right_inv β := by simp [← comp_assoc]
356+
260357
section ChangeOfUniverse
261358

262359
variable {W}

0 commit comments

Comments
 (0)