Skip to content

Commit cc77eee

Browse files
kim-emclaude
andcommitted
chore: restore lost content from leanprover-community#38972 merge in Cartesian/Mon.lean
The merge of master into nightly-testing dropped the `IsMonHom (toUnit M)`, `IsMonHom η[M]`, `Mono η[M]` instances in the `SemiCartesianMonoidalCategory` section, plus `IsMonHom.monoidHom` and the matching `yonedaMon.map`. Restore upstream/master's version of the file and re-add scoped `backward.defeqAttrib.useBackward true` on `Mon.uniqueHomToTrivial` and `yonedaMonFullyFaithful` for compatibility with the nightly Lean toolchain. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent f238619 commit cc77eee

1 file changed

Lines changed: 39 additions & 12 deletions

File tree

  • Mathlib/CategoryTheory/Monoidal/Cartesian

Mathlib/CategoryTheory/Monoidal/Cartesian/Mon.lean

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,21 @@ section SemiCartesianMonoidalCategory
2929

3030
variable {D : Type*} [Category* D] [SemiCartesianMonoidalCategory D]
3131

32+
namespace MonObj
33+
34+
@[to_additive]
35+
instance (M : D) [MonObj M] : IsMonHom (toUnit M) where
36+
37+
@[to_additive]
38+
instance (M : D) [MonObj M] : IsMonHom η[M] where
39+
mul_hom := by simp [toUnit_unique (ρ_ (𝟙_ D)).hom (λ_ (𝟙_ D)).hom]
40+
41+
-- The general `(f : 𝟙_ C ⟶ X) : Mono f` instance has a bad discrimination tree key.
42+
@[to_additive]
43+
instance (M : D) [MonObj M] : Mono η[M] := Limits.IsTerminal.mono_from isTerminalTensorUnit _
44+
45+
end MonObj
46+
3247
set_option backward.defeqAttrib.useBackward true in
3348
@[to_additive (attr := simps)]
3449
instance Mon.uniqueHomToTrivial (A : Mon D) : Unique (A ⟶ Mon.trivial D) where
@@ -278,6 +293,24 @@ scoped[CategoryTheory.MonObj] attribute [instance] Hom.commMonoid Hom.addCommMon
278293

279294
end BraidedCategory
280295

296+
/-- A monoid morphism `f : M ⟶ N` induces a monoid homomorphism `M(X) →* N(X)` for every `X`. -/
297+
@[to_additive (attr := simps!)
298+
/-- An additive monoid morphism `f : M ⟶ N` induces an additive monoid homomorphism
299+
`M(X) →+ N(X)` for every `X`. -/]
300+
def IsMonHom.monoidHom (f : M ⟶ N) [IsMonHom f] (X : C) : (X ⟶ M) →* (X ⟶ N) where
301+
toFun := (· ≫ f)
302+
map_one' := by simp [Hom.one_def]
303+
map_mul' := by simp [Hom.mul_def]
304+
305+
@[to_additive (attr := simp)]
306+
lemma IsMonHom.monoidHom_id : IsMonHom.monoidHom (𝟙 M) X = MonoidHom.id _ := by
307+
cat_disch
308+
309+
@[to_additive (attr := simp)]
310+
lemma IsMonHom.monoidHom_comp (f : M ⟶ N) (g : N ⟶ O) [IsMonHom f] [IsMonHom g] :
311+
IsMonHom.monoidHom (f ≫ g) X = MonoidHom.comp (monoidHom g X) (monoidHom f X) := by
312+
cat_disch
313+
281314
variable (M) in
282315
/-- If `M` is a monoid object, then `Hom(-, M)` is a presheaf of monoids. -/
283316
@[to_additive (attr := simps)
@@ -321,15 +354,11 @@ def yonedaMonObjIsoOfRepresentableBy
321354
/-- The yoneda embedding of `AddMon C` into presheaves of additive monoids. -/]
322355
def yonedaMon : Mon C ⥤ Cᵒᵖ ⥤ MonCat.{v} where
323356
obj M := yonedaMonObj M.X
324-
map {M N} ψ :=
325-
{ app Y := MonCat.ofHom
326-
{ toFun := (· ≫ ψ.hom)
327-
map_one' := by simp [Hom.one_def, Hom.one_def]
328-
map_mul' φ₁ φ₂ := by simp [Hom.mul_def] }
329-
naturality {M N} φ := MonCat.hom_ext <| MonoidHom.ext fun f ↦ Category.assoc φ.unop f ψ.hom }
330-
map_id M := NatTrans.ext <| funext fun _ ↦ MonCat.hom_ext <| MonoidHom.ext Category.comp_id
331-
map_comp _ _ :=
332-
NatTrans.ext <| funext fun _ ↦ MonCat.hom_ext <| MonoidHom.ext (.symm <| Category.assoc · _ _)
357+
map ψ :=
358+
{ app _ := MonCat.ofHom <| IsMonHom.monoidHom _ _
359+
naturality {_ _} φ := MonCat.hom_ext <| MonoidHom.ext fun f ↦ Category.assoc φ.unop f ψ.hom }
360+
map_id _ := NatTrans.ext <| funext fun _ ↦ MonCat.hom_ext <| IsMonHom.monoidHom_id
361+
map_comp _ _ := NatTrans.ext <| funext fun _ ↦ MonCat.hom_ext <| IsMonHom.monoidHom_comp _ _
333362

334363
@[to_additive (attr := reassoc)]
335364
lemma yonedaMon_naturality (α : yonedaMonObj M ⟶ yonedaMonObj N) (f : X ⟶ Y) (g : Y ⟶ M) :
@@ -372,9 +401,7 @@ def yonedaMonFullyFaithful : yonedaMon (C := C).FullyFaithful where
372401
← yonedaMon_naturality, Category.comp_id] }
373402
map_preimage {M N} α := by
374403
ext Y f
375-
dsimp only [yonedaMon_obj, yonedaMon_map_app, MonCat.hom_ofHom]
376-
simp_rw [← yonedaMon_naturality]
377-
simp
404+
simp [← dsimp% yonedaMon_naturality]
378405
preimage_map φ := Mon.Hom.ext (Category.id_comp φ.hom)
379406

380407
@[to_additive]

0 commit comments

Comments
 (0)