Skip to content

Commit ccf72ba

Browse files
committed
...
Added CatesianMonoidal structure analogous to GrpCat
1 parent b355864 commit ccf72ba

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4483,6 +4483,7 @@ public import Mathlib.Geometry.Manifold.Algebra.Structures
44834483
public import Mathlib.Geometry.Manifold.Bordism
44844484
public import Mathlib.Geometry.Manifold.BumpFunction
44854485
public import Mathlib.Geometry.Manifold.Category.MfldCat.Basic
4486+
public import Mathlib.Geometry.Manifold.Category.MfldCat.CartesianMonoidal
44864487
public import Mathlib.Geometry.Manifold.ChartedSpace
44874488
public import Mathlib.Geometry.Manifold.Complex
44884489
public import Mathlib.Geometry.Manifold.ConformalGroupoid
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/-
2+
Copyright (c) 2026 Jack McCarthy. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Jack McCarthy
5+
-/
6+
module
7+
8+
public import Mathlib.Geometry.Manifold.Category.MfldCat.Basic
9+
public import Mathlib.CategoryTheory.Monoidal.Cartesian.Basic
10+
11+
/-!
12+
# The cartesian monoidal structure on `MfldCat`
13+
14+
We endow `MfldCat 𝕜 n` with its cartesian monoidal structure: the monoidal product is the
15+
product manifold `prodObj M N`, and the unit is the singleton `PUnit`, viewed as a
16+
zero-dimensional `𝕜`-manifold (`point`). We also derive the induced braided category structure.
17+
-/
18+
19+
@[expose] public section
20+
21+
open CategoryTheory Limits MonoidalCategory
22+
open scoped Manifold ContDiff
23+
24+
universe u v
25+
26+
namespace MfldCat
27+
28+
variable {𝕜 : Type v} [NontriviallyNormedField 𝕜] {n : ℕ∞ω}
29+
30+
/-- The product of two manifolds as an object of `MfldCat`. The chart space is
31+
`ModelProd M.H N.H` and the model is `M.I.prod N.I`, so `prodObj M N` is the product manifold
32+
in the standard sense. -/
33+
def prodObj (M N : MfldCat.{u} 𝕜 n) : MfldCat.{u} 𝕜 n :=
34+
of (M × N) (M.E × N.E) (ModelProd M.H N.H) (M.I.prod N.I)
35+
36+
/-- Limit data for the binary product of `M` and `N` in `MfldCat`, using `prodObj M N`. -/
37+
def binaryProductLimitCone (M N : MfldCat.{u} 𝕜 n) : LimitCone (pair M N) where
38+
cone := BinaryFan.mk (P := prodObj M N)
39+
(ofHom ⟨Prod.fst, contMDiff_fst⟩) (ofHom ⟨Prod.snd, contMDiff_snd⟩)
40+
isLimit := BinaryFan.IsLimit.mk _
41+
(fun l r => ofHom ⟨fun s => (l s, r s), l.hom.contMDiff.prodMk r.hom.contMDiff⟩)
42+
(fun _ _ => rfl) (fun _ _ => rfl)
43+
(fun _ _ _ h₁ h₂ => by
44+
ext x
45+
exact Prod.ext (ConcreteCategory.congr_hom h₁ x) (ConcreteCategory.congr_hom h₂ x))
46+
47+
/-- The singleton `PUnit`, viewed as a zero-dimensional `𝕜`-manifold. We use `PUnit.{u + 1}`
48+
(rather than `Fin 0 → 𝕜`, which lives in `𝕜`'s universe) so that `point` exists in
49+
`MfldCat.{u} 𝕜 n` for any universe `v` of `𝕜`. -/
50+
def point : MfldCat.{u} 𝕜 n := ofNormedSpace n PUnit.{u + 1}
51+
52+
/-- The point manifold is terminal in `MfldCat 𝕜 n`. -/
53+
def isTerminalPoint : IsTerminal (point (𝕜 := 𝕜) (n := n)) :=
54+
IsTerminal.ofUniqueHom (fun _ => ofHom ⟨fun _ => PUnit.unit, contMDiff_const⟩)
55+
(fun _ _ => by ext; rfl)
56+
57+
/-- We choose `prodObj M N` as the product of `M` and `N` and `point` as the terminal object. -/
58+
noncomputable instance cartesianMonoidalCategory :
59+
CartesianMonoidalCategory (MfldCat.{u} 𝕜 n) :=
60+
.ofChosenFiniteProducts ⟨_, isTerminalPoint⟩ binaryProductLimitCone
61+
62+
noncomputable instance : BraidedCategory (MfldCat.{u} 𝕜 n) := .ofCartesianMonoidalCategory
63+
64+
@[simp] theorem tensorObj_eq (M N : MfldCat.{u} 𝕜 n) : (M ⊗ N) = prodObj M N := rfl
65+
66+
end MfldCat

0 commit comments

Comments
 (0)