@@ -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+
165173end
166174
167175section
@@ -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+
239258end
240259
241260section
@@ -257,6 +276,84 @@ lemma comp_assoc {X Y Z T : C} {a₁ a₂ a₃ a₁₂ a₂₃ a : M}
257276
258277end
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+
260357section ChangeOfUniverse
261358
262359variable {W}
0 commit comments