Skip to content

Commit 5c26b17

Browse files
kim-emb-mehta
authored andcommitted
chore: backport robustness changes from bump/nightly-2026-04-27 (leanprover-community#38597)
See [#nightly-testing > nightly#213 adaptations for nightly-2026-04-27 @ 💬](https://leanprover.zulipchat.com/#narrow/channel/428973-nightly-testing/topic/nightly.23213.20adaptations.20for.20nightly-2026-04-27/near/591262169).
1 parent f7f73d2 commit 5c26b17

7 files changed

Lines changed: 90 additions & 26 deletions

File tree

Mathlib/AlgebraicTopology/SimplexCategory/Augmented/Monoidal.lean

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,12 @@ abbrev inr' (x y : SimplexCategory) : y ⟶ tensorObjOf x y := WithInitial.down
173173
set_option backward.isDefEq.respectTransparency false in
174174
lemma inl'_eval (x y : SimplexCategory) (i : Fin (x.len + 1)) :
175175
(inl' x y).toOrderHom i = (i.castAdd _).cast (Nat.succ_add x.len (y.len + 1)) := by
176-
dsimp [inl', inl, MonoidalCategoryStruct.rightUnitor, MonoidalCategoryStruct.whiskerLeft,
177-
tensorHom, WithInitial.down, rightUnitor, tensorObj]
178176
ext
179-
simp [OrderEmbedding.toOrderHom]
177+
simp [inl', inl, MonoidalCategoryStruct.rightUnitor, MonoidalCategoryStruct.whiskerLeft,
178+
MonoidalCategoryStruct.tensorUnit, MonoidalCategoryStruct.tensorObj,
179+
tensorUnit, tensorHom, WithInitial.down, rightUnitor, tensorObj, CategoryStruct.id,
180+
CategoryStruct.comp, WithInitial.comp, WithInitial.id,
181+
OrderEmbedding.toOrderHom]
180182

181183
set_option backward.isDefEq.respectTransparency false in
182184
lemma inr'_eval (x y : SimplexCategory) (i : Fin (y.len + 1)) :

Mathlib/CategoryTheory/Bicategory/Coherence.lean

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,29 @@ def normalizeIso {a : B} :
133133
| _, _, p, Hom.comp f g =>
134134
(α_ _ _ _).symm ≪≫ whiskerRightIso (normalizeIso p f) g ≪≫ normalizeIso (normalizeAux p f) g
135135

136+
-- Equation lemmas for `normalizeIso`/`normalizeAux` matching `≫`/`𝟙`
137+
-- (i.e., `CategoryStruct.comp`/`CategoryStruct.id` for `FreeBicategory`) instead of
138+
-- `Hom.comp`/`Hom.id`. Needed because after leanprover/lean4#13363, `canUnfoldAtMatcher`
139+
-- no longer unfolds class projections in match discriminants.
140+
@[simp] theorem normalizeAux_comp {a : B} {b c d : FreeBicategory B}
141+
(p : Path a b) (f : b ⟶ c) (g : c ⟶ d) :
142+
normalizeAux p (f ≫ g) = normalizeAux (normalizeAux p f) g := rfl
143+
144+
@[simp] theorem normalizeAux_id {a : B} {b : FreeBicategory B} (p : Path a b) :
145+
normalizeAux p (𝟙 b) = p := rfl
146+
147+
@[simp] theorem normalizeIso_comp {a : B} {b c d : FreeBicategory B}
148+
(p : Path a b) (f : b ⟶ c) (g : c ⟶ d) :
149+
normalizeIso p (f ≫ g) =
150+
(α_ _ _ _).symm ≪≫ whiskerRightIso (normalizeIso p f) g ≪≫
151+
normalizeIso (normalizeAux p f) g := rfl
152+
153+
@[simp] theorem normalizeIso_id {a : B} {b : FreeBicategory B} (p : Path a b) :
154+
normalizeIso p (𝟙 b) = ρ_ _ := rfl
155+
156+
@[simp] theorem quot_whisker_left {a b c : FreeBicategory B} (f : a ⟶ b) {g h : b ⟶ c}
157+
(η : Hom₂ g h) : Quot.mk Rel (Hom₂.whisker_left f η) = f ◁ (Quot.mk Rel η) := rfl
158+
136159
/-- Given a 2-morphism between `f` and `g` in the free bicategory, we have the equality
137160
`normalizeAux p f = normalizeAux p g`.
138161
-/

Mathlib/CategoryTheory/Limits/Shapes/ConcreteCategory.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,11 +296,11 @@ def multiequalizerEquivAux {J : MulticospanShape.{w, w'}} (I : MulticospanIndex
296296
| WalkingMulticospan.right b => I.fst b (x.1 _)
297297
property := by
298298
rintro (a | b) (a' | b') (f | f | f)
299-
· simp
299+
· simp only [WalkingMulticospan.Hom.id_eq_id, Functor.map_id]; rfl
300300
· rfl
301301
· dsimp
302302
exact (x.2 b').symm
303-
· simp }
303+
· simp only [WalkingMulticospan.Hom.id_eq_id, Functor.map_id]; rfl }
304304
left_inv := by
305305
intro x; ext (a | b)
306306
· rfl

Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

Lines changed: 40 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -210,24 +210,51 @@ theorem walkingParallelPairOpEquiv_counitIso_inv_app_op_one :
210210
walkingParallelPairOpEquiv.counitIso.inv.app (op one) = 𝟙 (op one) :=
211211
rfl
212212

213-
variable {C : Type u} [Category.{v} C]
213+
variable {C : Type u}
214214
variable {X Y : C}
215215

216+
namespace parallelPair
217+
218+
/-- Implementation of `parallelPair`, do not use directly. -/
219+
@[instance_reducible]
220+
def parallelPairObj (X Y : C) (x : WalkingParallelPair) : C :=
221+
match x with
222+
| zero => X
223+
| one => Y
224+
225+
@[simp] theorem parallelPairObj_zero : parallelPairObj X Y zero = X := rfl
226+
@[simp] theorem parallelPairObj_one : parallelPairObj X Y one = Y := rfl
227+
228+
variable [Category.{v} C]
229+
230+
/-- Implementation of `parallelPair`, do not use directly. -/
231+
def parallelPairHom (f g : X ⟶ Y) {x y : WalkingParallelPair} (h : x ⟶ y) :
232+
parallelPairObj X Y x ⟶ parallelPairObj X Y y :=
233+
match h with
234+
| .id _ => 𝟙 _
235+
| .left => f
236+
| .right => g
237+
238+
@[simp] theorem parallelPairHom_id {f g : X ⟶ Y} {x : WalkingParallelPair} :
239+
parallelPairHom f g (𝟙 x) = 𝟙 (parallelPairObj X Y x) := (rfl)
240+
241+
@[simp] theorem parallelPairHom_left {f g : X ⟶ Y} :
242+
parallelPairHom f g .left = f := (rfl)
243+
244+
@[simp] theorem parallelPairHom_right {f g : X ⟶ Y} :
245+
parallelPairHom f g .right = g := (rfl)
246+
247+
end parallelPair
248+
249+
variable [Category.{v} C]
250+
251+
open parallelPair in
216252
/-- `parallelPair f g` is the diagram in `C` consisting of the two morphisms `f` and `g` with
217253
common domain and codomain. -/
218254
def parallelPair (f g : X ⟶ Y) : WalkingParallelPair ⥤ C where
219-
obj x :=
220-
match x with
221-
| zero => X
222-
| one => Y
223-
map h :=
224-
match h with
225-
| WalkingParallelPairHom.id _ => 𝟙 _
226-
| left => f
227-
| right => g
228-
-- `sorry` can cope with this, but it's too slow:
229-
map_comp := by
230-
rintro _ _ _ ⟨⟩ g <;> cases g <;> simp
255+
obj x := parallelPairObj X Y x
256+
map h := parallelPairHom f g h
257+
map_comp := by rintro _ _ _ ⟨⟩ ⟨⟩ <;> simp
231258

232259
@[simp]
233260
theorem parallelPair_obj_zero (f g : X ⟶ Y) : (parallelPair f g).obj zero = X := rfl

Mathlib/CategoryTheory/Monoidal/Free/Coherence.lean

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,10 @@ theorem normalizeObj_tensor (X Y : F C) (n : NormalMonoidalObject C) :
104104
/-- Auxiliary definition for `normalize`. -/
105105
def normalizeObj' (X : F C) : N C ⥤ N C := Discrete.functor fun n ↦ ⟨normalizeObj X n⟩
106106

107+
@[simp]
108+
theorem as_obj_normalizeObj' (X : F C) (n : N C) :
109+
((normalizeObj' X).obj n).as = normalizeObj X n.as := rfl
110+
107111
section
108112

109113
open Hom
@@ -185,14 +189,21 @@ def normalizeIsoApp :
185189

186190
/-- Almost non-definitionally equal to `normalizeIsoApp`, but has a better definitional property
187191
in the proof of `normalize_naturality`. -/
188-
@[simp]
189192
def normalizeIsoApp' :
190193
∀ (X : F C) (n : NormalMonoidalObject C), inclusionObj n ⊗ X ≅ inclusionObj (normalizeObj X n)
191194
| of _, _ => Iso.refl _
192195
| unit, _ => ρ_ _
193196
| tensor X Y, n =>
194197
(α_ _ _ _).symm ≪≫ whiskerRightIso (normalizeIsoApp' X n) Y ≪≫ normalizeIsoApp' _ _
195198

199+
@[simp] theorem normalizeIsoApp'_tensor (X Y : F C) (n : NormalMonoidalObject C) :
200+
normalizeIsoApp' C (X ⊗ Y) n =
201+
(α_ _ _ _).symm ≪≫ whiskerRightIso (normalizeIsoApp' C X n) Y ≪≫
202+
normalizeIsoApp' C Y _ := rfl
203+
204+
@[simp] theorem normalizeIsoApp'_unit (n : NormalMonoidalObject C) :
205+
normalizeIsoApp' C (𝟙_ (F C)) n = ρ_ _ := rfl
206+
196207
theorem normalizeIsoApp_eq :
197208
∀ (X : F C) (n : N C), normalizeIsoApp C X n = normalizeIsoApp' C X n.as
198209
| of _, _ => rfl
@@ -201,7 +212,7 @@ theorem normalizeIsoApp_eq :
201212
rw [normalizeIsoApp, normalizeIsoApp']
202213
rw [normalizeIsoApp_eq X n]
203214
rw [normalizeIsoApp_eq Y ⟨normalizeObj X n.as⟩]
204-
rfl
215+
simp
205216

206217
@[simp]
207218
theorem normalizeIsoApp_tensor (X Y : F C) (n : N C) :
@@ -252,13 +263,13 @@ theorem normalize_naturality (n : NormalMonoidalObject C) {X Y : F C} (f : X ⟶
252263
case comp f g ihf ihg => simp [ihg, reassoc_of% (ihf _)]
253264
case whiskerLeft X' X Y f ih =>
254265
intro n
255-
dsimp only [normalizeObj_tensor, normalizeIsoApp', tensor_eq_tensor, Iso.trans_hom,
266+
dsimp only [normalizeObj_tensor, normalizeIsoApp'_tensor, Iso.trans_hom,
256267
Iso.symm_hom, whiskerRightIso_hom, Function.comp_apply, inclusion_obj]
257268
rw [associator_inv_naturality_right_assoc, whisker_exchange_assoc, ih]
258269
simp
259270
case whiskerRight X Y h η' ih =>
260271
intro n
261-
dsimp only [normalizeObj_tensor, normalizeIsoApp', tensor_eq_tensor, Iso.trans_hom,
272+
dsimp only [normalizeObj_tensor, normalizeIsoApp'_tensor, Iso.trans_hom,
262273
Iso.symm_hom, whiskerRightIso_hom, Function.comp_apply, inclusion_obj]
263274
rw [associator_inv_naturality_middle_assoc, ← comp_whiskerRight_assoc, ih]
264275
have := dcongr_arg (fun x => (normalizeIsoApp' C η' x).hom) (normalizeObj_congr n h)
@@ -267,7 +278,6 @@ theorem normalize_naturality (n : NormalMonoidalObject C) {X Y : F C} (f : X ⟶
267278

268279
end
269280

270-
set_option backward.isDefEq.respectTransparency false in
271281
/-- The isomorphism between `n ⊗ X` and `normalize X n` is natural (in both `X` and `n`, but
272282
naturality in `n` is trivial and was "proved" in `normalizeIsoAux`). This is the real heart
273283
of our proof of the coherence theorem. -/

Mathlib/CategoryTheory/Sites/DenseSubsite/OneHypercoverDense.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ def multicospanMap {P Q : C₀ᵒᵖ ⥤ A} (f : P ⟶ Q) :
106106
| WalkingMulticospan.left i => f.app _
107107
| WalkingMulticospan.right j => f.app _
108108
naturality := by
109-
rintro (i₁ | j₁) (i₂ | j₂) (_ | _)
110-
all_goals simp
109+
rintro (i₁ | j₁) (i₂ | j₂) (_ | _) <;>
110+
simp [MulticospanIndex.multicospan]
111111

112112
/-- The natural isomorphism between the diagrams attached to `data : F.PreOneHypercoverDenseData X`
113113
that are induced by isomorphisms in `C₀ᵒᵖ ⥤ A`. -/

Mathlib/CategoryTheory/Sites/Hypercover/One.lean

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -762,7 +762,9 @@ def Hom.mapMulticospan {E : PreOneHypercover.{w} S} {F : PreOneHypercover.{w'} S
762762
| .id _ => .id _
763763
| .fst i => WalkingMulticospan.Hom.fst (J := F.multicospanShape) (f.s₁' i)
764764
| .snd i => WalkingMulticospan.Hom.snd (J := F.multicospanShape) (f.s₁' i)
765-
map_id := by simp
765+
map_id
766+
| .left _ => rfl
767+
| .right _ => rfl
766768
map_comp
767769
| .id _, _ => by simp
768770
| .fst _, .id _ => by simp

0 commit comments

Comments
 (0)