Zulip Chat Archive

Stream: mathlib4

Topic: change in behaviour with `simps`


Kevin Buzzard (Apr 29 2023 at 12:07):

I don't know anything about Kan extensions but I've traced back a failure with simp in !4#3703 (which I haven't yet fixed) to the following issue:

import Mathlib.CategoryTheory.Limits.KanExtension


#check CategoryTheory.lan_map_app
/-
⊢ ∀ {S : Type u₁} {L : Type u₂} {D : Type u₃} [inst : CategoryTheory.Category S] [inst_1 : CategoryTheory.Category L]
  [inst_2 : CategoryTheory.Category D] (ι : S ⥤ L)
  [inst_3 : ∀ (X : L), CategoryTheory.Limits.HasColimitsOfShape (CategoryTheory.CostructuredArrow ι X) D] {X X' : S ⥤ D}
  (f : X ⟶ X') (x : L),
  ((CategoryTheory.lan ι).map f).app x =
    CategoryTheory.Limits.colimit.desc (CategoryTheory.Lan.diagram ι X x)
      { pt := CategoryTheory.Limits.colimit (CategoryTheory.Lan.diagram ι X' x),
        ι :=
          CategoryTheory.NatTrans.mk fun i ↦
            (f.app i.left ≫
+                (↑(CategoryTheory.Lan.equiv ι X' (CategoryTheory.Lan.loc ι X')) (𝟙 (CategoryTheory.Lan.loc ι X'))).app
+                  i.left) ≫
              CategoryTheory.Limits.colimit.pre (CategoryTheory.Lan.diagram ι X' x)
                (CategoryTheory.CostructuredArrow.map i.hom) }
                -/

/-
Lean 3:

category_theory.Lan_map_app :
  ∀ (ι : ?M_1 ⥤ ?M_2)
  [_inst_4 :
    ∀ (X : ?M_2), category_theory.limits.has_colimits_of_shape (category_theory.costructured_arrow ι X) ?M_3]
  (X X' : ?M_1 ⥤ ?M_3) (f : X ⟶ X') (x : ?M_2),
    ((category_theory.Lan ι).map f).app x =
      category_theory.limits.colimit.desc (category_theory.Lan.diagram ι X x)
        {X := category_theory.limits.colimit (category_theory.Lan.diagram ι X' x) _,
         ι := {app := λ (i : category_theory.costructured_arrow ι x),
                        (f.app i.left ≫
+                             category_theory.limits.colimit.ι (category_theory.Lan.diagram ι X' (ι.obj i.left))
+                                 (category_theory.costructured_arrow.mk (𝟙 (ι.obj i.left))) ≫
+                               𝟙
+                                 (category_theory.limits.colimit
+                                    (category_theory.Lan.diagram ι X' (ι.obj i.left)))) ≫
                          category_theory.limits.colimit.pre (category_theory.Lan.diagram ι X' x)
                            (category_theory.costructured_arrow.map i.hom),
               naturality' := _}}

-/

I've posted both the Lean 4 and Lean 3 types of lan_map_app and noted the lines where they differ definitionally with + on the left. I tried to prove the equality of these two subterms with simp but I couldn't get it to work so I'm stuck, but I am prepared to work more on this if someone can suggest anything productive to investigate.

Kevin Buzzard (May 01 2023 at 09:34):

Aah, progress: the proof that the two marked areas are equal is not rfl but Category.comp_id. This should get me through.


Last updated: Dec 20 2023 at 11:08 UTC