Zulip Chat Archive
Stream: Infinity-Cosmos
Topic: conical simplicial limits
Emily Riehl (Sep 19 2024 at 20:26):
I've been experimentally adding things to @Dagur Asgeirsson's file on conical limits and have run into a universe error I don't understand.
The file starts with some variables
variable {J C : Type*} [Category J] [Category C] [SimplicialCategory C]
while I thought was identical to writing
universe u v u₁ v₁
variable {J : Type u₁} [Category.{v₁} J]
variable {C : Type u} [Category.{v} C] [SimplicialCategory C]
But when I replace the former with the latter it breaks a bunch of stuff in his proof that conical limits induce an isomorphism. Any idea what's up?
Emily Riehl (Sep 19 2024 at 20:27):
The reason I'm trying to be more explicit about universes is I'm having trouble defining HasConicalLimits
which refers to a simplicial category that has all conical limits up to the size of its hom simplicial sets.
Matthew Ballard (Sep 19 2024 at 20:28):
The former creates universe metavariables. These metavariables can secretly hide universe constraints in the code.
Matthew Ballard (Sep 19 2024 at 20:28):
Specifically the undecorated Category
classes
Adam Topaz (Sep 19 2024 at 21:06):
We need a [Category* C]
elaborator!
Adam Topaz (Sep 19 2024 at 21:17):
Here's a prototype:
import Mathlib
elab "Category*" C:term : term => do
let v ← Lean.Meta.mkFreshLevelMVar
let C ← Lean.Elab.Term.elabTerm C none
let .sort (.succ u) := (← Lean.Meta.inferType C) | throwError "ERROR"
let cat : Lean.Expr := .const ``CategoryTheory.Category [v,u]
Lean.Elab.Term.levelMVarToParam (.app cat C)
open CategoryTheory in
example (C : Type*) [Category* C] (X Y Z : C) (f : X ⟶ Y) (g : Y ⟶ Z) : X ⟶ Z := f ≫ g
Emily Riehl (Sep 19 2024 at 22:02):
If I've understood @Matthew Ballard's point, it seems that in the code below there are secret universe constraints that the universe metavariables automatically configure themselves to satisfy. But when I replace them with named universe variables, the named variables don't satisfy the constraint unless explicitly told about it.
Emily Riehl (Sep 19 2024 at 22:08):
I think I see the issue. One of the errors caused when using named variables is here
noncomputable def limitComparison (X : C) :
sHom X c.pt ⟶ limit (F ⋙ (sHomFunctor C).obj (op X)) :=
limit.lift _ (((sHomFunctor C).obj (op X)).mapCone c)
where the error message is failed to synthesize
HasLimit (F ⋙ (sHomFunctor C).obj (op X))
. This functor is valued in a presheaf category valued in Type v
so should have a limit if v
is at least max u₁ v₁
.
Emily Riehl (Sep 19 2024 at 22:09):
Unfortunately the code is still broken with
variable {J : Type u₁} [Category.{v₁} J]
variable {C : Type u} [Category.{max u₁ v₁} C] [SimplicialCategory C] {F : J ⥤ C} (c : Cone F)
though it works with
variable {J : Type v} [Category.{v} J]
variable {C : Type u} [Category.{v} C] [SimplicialCategory C] {F : J ⥤ C} (c : Cone F)
I'm not sure why...
Kim Morrison (Sep 19 2024 at 23:45):
Adam Topaz said:
Here's a prototype:
import Mathlib elab "Category*" C:term : term => do let v ← Lean.Meta.mkFreshLevelMVar let C ← Lean.Elab.Term.elabTerm C none let .sort (.succ u) := (← Lean.Meta.inferType C) | throwError "ERROR" let cat : Lean.Expr := .const ``CategoryTheory.Category [v,u] Lean.Elab.Term.levelMVarToParam (.app cat C) open CategoryTheory in example (C : Type*) [Category* C] (X Y Z : C) (f : X ⟶ Y) (g : Y ⟶ Z) : X ⟶ Z := f ≫ g
Looks good to me. Could we combine it with a linter that forbids bare [Category C]
?
Adam Topaz (Sep 19 2024 at 23:48):
Well, one thing I would still like to experiment with is arranging the morphism universe parameter to come before the object one.
Adam Topaz (Sep 19 2024 at 23:49):
But I won’t have time to try doing that seriously for a couple of days
Adam Topaz (Sep 19 2024 at 23:50):
Also matching on .succ u
isn’t ideal
Dagur Asgeirsson (Sep 25 2024 at 11:57):
@Emily Riehl I've opened https://github.com/emilyriehl/infinity-cosmos/pull/13 which fixes the universe issues in this file. It adds the assumption [HasLimitsOfShape J SSet]
(which will always hold if J
is "small enough") to fix the issues in the section about the comparison maps. It also reorders the universe arguments so that HasConicalLimitsOfSize
has the desired meaning.
Emily Riehl (Sep 25 2024 at 21:18):
Thanks @Dagur Asgeirsson
Emily Riehl (Nov 02 2024 at 20:59):
I've been trying to build out some API around the conical simplicial limits, but I could use some advice on
(a) structuring things property (eg should these be theorems or instances) and
(b) help in filling some sorries (where I'm stuck).
This all concerns the Limits file under SimplicialCategory created by @Dagur Asgeirsson
Specifically, I'd like to be able to add an assumption that a simplicial category K has a certain type of conical simplicial limits and have lean infer that K then has the underlying unenriched limits of the same type.
For example
instance HasConicalProducts_hasProducts [HasConicalProducts C] : HasProducts C := by sorry
Emily Riehl (Nov 02 2024 at 21:00):
Some results/constructions in this direction are straightforward (aside from the choice of variables names; advice is very welcome):
/--
A limit cone `c` in a simplicial category `A` is a *simplicially enriched limit* if for every
`X : C`, the cone obtained by applying the simplicial coyoneda functor `(X ⟶[A] -)` to `c` is a
limit cone in `SSet`.
-/
structure IsSLimit where
isLimit : IsLimit c
isSLimit (X : C) : IsLimit <| ((sHomFunctor C).obj (op X)).mapCone c
/-- Conical simplicial limits are also limits in the unenriched sense.-/
def IsSLimit_islimit (slim : IsSLimit c) : IsLimit c := slim.isLimit
Dagur Asgeirsson (Nov 02 2024 at 21:06):
Everything of the form "has conical limit -> has limit" is can be an instance.
Regarding the sorry in HasConicalLimitsOfSize_hasLimitsOfSize
I can take a look a bit later, but I suspect the problem is that Lean is making up some universes and everything should just work if you provide the HasConicalLimitsOfSize
instance and the HasLimitsOfSize
that you want to prove with (the same) explicit universes
Emily Riehl (Nov 11 2024 at 00:24):
I managed to close these sorries but with horrible proofs. Can anyone explain what I'm doing wrong?
Emily Riehl (Nov 11 2024 at 00:25):
Specifically
/-- `C` has all conical limits of size `v₁ u₁` (`HasLimitsOfSize.{v₁ u₁} C`)
if it has conical limits of every shape `J : Type u₁` with `[Category.{v₁} J]`.
-/
@[pp_with_univ]
class HasConicalLimitsOfSize (C : Type u) [Category.{v} C] [SimplicialCategory C] : Prop where
/-- All functors `F : J ⥤ C` from all small `J` have conical limits -/
has_conical_limits_of_shape : ∀ (J : Type u₁) [Category.{v₁} J], HasConicalLimitsOfShape J C := by
infer_instance
instance HasConicalLimitsOfSize_hasLimitsOfSize [HasConicalLimitsOfSize.{v₂, u₂, v, u} C] :
HasLimitsOfSize.{v₂, u₂, v, u} C where
has_limits_of_shape := by
intro J hyp
constructor
intro F
have lem1 : HasConicalLimitsOfSize.{v₂, u₂, v, u} C := by infer_instance
have lem2 : HasConicalLimitsOfShape J C := by
apply lem1.has_conical_limits_of_shape
have : HasConicalLimit F := by
apply lem2.has_conical_limit
exact HasConicalLimit_hasLimit F
Emily Riehl (Nov 11 2024 at 00:25):
variable (C) in
class HasConicalProducts : Prop where
/-- All discrete diagrams of bounded size have conical products. -/
has_conical_limits_of_shape : ∀ J : Type w, HasConicalLimitsOfShape (Discrete J) C :=
by infer_instance
-- has_limits_of_shape : ∀ { I : Type w} (f : I → C), HasConicalProduct f := by
-- infer_instance
instance HasConicalProducts_hasProducts [hyp : HasConicalProducts.{w, v, u} C] :
HasProducts.{w, v, u} C := by
intro I
constructor
intro f
have := hyp.has_conical_limits_of_shape I
have : HasConicalLimit f := by infer_instance
exact HasConicalLimit_hasLimit f
Emily Riehl (Nov 11 2024 at 00:27):
I couldn't figure out how to reference the hypothesis HasConicalProducts
in the latter without giving it a name; I got a circular universe error I hadn't seen before.
Emily Riehl (Nov 11 2024 at 00:28):
It's possible that some of the issue here has to do with whether products are indexed by functions out of a type or functors out a discrete category. In mathlib HasProduct
is indexed by functions out of a type but HasProducts
references limits of discrete diagrams (indexed by functors out of a discrete category). See the commented out alternative form of has_conical_limits_of_shape.
Dagur Asgeirsson (Nov 11 2024 at 08:01):
I'm taking a look
Dagur Asgeirsson (Nov 11 2024 at 08:21):
The issue was just that the instances HasConicalLimitsOfShape -> HasConicalLimit
and HasConicalLimitsOfSize -> HasConicalLimitsOfShape
weren't declared until further down in the file. Now the proofs are basically just inferInstance
Dagur Asgeirsson (Nov 11 2024 at 08:21):
https://github.com/emilyriehl/infinity-cosmos/pull/38
Emily Riehl (Nov 11 2024 at 13:42):
Thank you. Someday I hope I won't be so bad at this... ;)
Kevin Buzzard (Nov 11 2024 at 15:37):
It's certainly quite the learning curve, for sure! Moreover I think learning category theory is a very hard place to start. I remember the first Lean for the Curious Mathematician in something like 2020, when I had felt like I was on top of the system, and Kim Morrison had put some category theory exercises together for the attendees, and after about 2 hours of working on them I had just about stumbled through the first one -- and this was after we'd written the perfectoid space paper!
Dagur Asgeirsson (Nov 11 2024 at 17:43):
Especially the API for limits takes some getting used to
Emily Riehl (Nov 20 2024 at 18:46):
I'm back with my regularly scheduled trouble with instances and universe levels.
@Mario Carneiro pointed out (of course) that since an ∞-cosmos has conical products it should have a conical terminal object. Unfortunately, lean does not agree.
I tried to remedy this situation as follows:
section ConicalProducts
variable {C : Type u} [Category.{v} C] [SimplicialCategory C]
/-- An abbreviation for `HasSLimit (Discrete.functor f)`. -/
abbrev HasConicalProduct { I : Type w} (f : I → C) := HasConicalLimit (Discrete.functor f)
instance HasConicalProduct_hasProduct {I : Type w} (f : I → C) [HasConicalProduct f] :
HasProduct f := HasConicalLimit_hasLimit (Discrete.functor f)
variable (C) in
class HasConicalProducts : Prop where
/-- All discrete diagrams of bounded size have conical products. -/
has_conical_limits_of_shape : ∀ J : Type w, HasConicalLimitsOfShape (Discrete J) C :=
by infer_instance
-- has_limits_of_shape : ∀ { I : Type w} (f : I → C), HasConicalProduct f := by
-- infer_instance
instance HasConicalProducts_hasProducts [hyp : HasConicalProducts.{w, v, u} C] :
HasProducts.{w, v, u} C := by
intro I
constructor
intro f
have := hyp.has_conical_limits_of_shape I
have : HasConicalLimit f := by infer_instance
exact HasConicalLimit_hasLimit f
instance HasConicalProducts_hasConicalTerminal [hyp : HasConicalProducts.{0, v, u} C] :
HasConicalTerminal C := hyp.has_conical_limits_of_shape PEmpty.{1}
instance HasConicalProducts_hasConicalTerminal' [hyp : HasConicalProducts C] :
HasConicalTerminal C :=
have inst := hyp.has_conical_limits_of_shape PEmpty
sorry
end ConicalProducts
Emily Riehl (Nov 20 2024 at 18:47):
My question is firstly whether the final statement is correct. If so, does anyone have suggestions for how to fill the last sorry.
Mario Carneiro (Nov 20 2024 at 18:48):
the statement looks correct to me
Mario Carneiro (Nov 20 2024 at 18:49):
what happens when you just replace the 0 with w
?
Mario Carneiro (Nov 20 2024 at 18:50):
I guess you will need a slightly different PEmpty
but otherwise it seems like it would work
Dagur Asgeirsson (Nov 20 2024 at 19:24):
Since HasConicalTerminal
is defined in terms of Discrete.{0} PEmpty
, you can't directly infer it. As Mario points out, you could get something like HasConicalLimitsOfShape (Discrete.{w} PEmpty
. To get the one of size 0, you'd need an analogue of docs#CategoryTheory.Limits.hasLimitsOfSizeShrink to finish.
Alternatively, since these shapes are equivalent categories, an analogue of docs#CategoryTheory.Limits.hasLimitsOfShape_of_equivalence would work.
In any case, these would both be useful to have
Emily Riehl (Nov 22 2024 at 02:17):
Thanks for these suggestions. I tried to implement everything (which took me down various rabbit holes to):
variable {J : Type u₁} [Category.{v₁} J]
variable {C : Type u} [Category.{v} C] [SimplicialCategory C]
def hasConicalLimitOfIso.coneIso {F G : J ⥤ C} (α : F ≅ G) (c : Cone F) (X : C) :
((sHomFunctor C).obj (op X)).mapCone ((Cones.postcompose α.hom).obj c) ≅
(Cones.postcompose (isoWhiskerRight α ((sHomFunctor C).obj (op X))).hom).obj
(((sHomFunctor C).obj (op X)).mapCone c) := sorry
Emily Riehl (Nov 22 2024 at 02:18):
But despite proving conical analogues of everything you mentioned I still wasn't able to finish this proof:
instance HasConicalProducts_hasConicalTerminal' [hyp : HasConicalProducts.{w, v, u} C] :
HasConicalTerminal C := by
unfold HasConicalTerminal
have inst := hyp.has_conical_limits_of_shape PEmpty
let eq : PEmpty.{w + 1} ≃ PEmpty.{1} := Equiv.equivPEmpty PEmpty.{w + 1}
let eq' : Discrete PEmpty.{w + 1} ≃ Discrete PEmpty.{1} :=
Equiv.equivOfIsEmpty (Discrete PEmpty.{w + 1}) (Discrete PEmpty.{1})
refine hasConicalLimitsOfShape_of_equivalence (J := Discrete PEmpty.{w+1}) ?_
sorry
Emily Riehl (Nov 22 2024 at 02:20):
I think the problem might by the theorems concern equivalences of categories , which confusingly (to me) are denoted with the symbol ≅
. But this does not type check in either eq
or eq'
because
argument
PEmpty.{1}
has type
Type : Type 1
but is expected to have type
Type w : Type (w + 1)
Dagur Asgeirsson (Nov 22 2024 at 08:13):
Note that equivalence of categories is denoted ≌
(\backcong
) and not ≅
(\iso
/\cong
). Is that the symbol you wrote? It should typecheck between the Discrete PEmpty
's (the other ones aren't categories).
Dagur Asgeirsson (Nov 22 2024 at 08:15):
This works:
import Mathlib
universe w
open CategoryTheory
def eq : Discrete PEmpty.{1} ≌ Discrete PEmpty.{w+1} :=
Discrete.equivalence (Equiv.equivPEmpty PEmpty.{1})
Kim Morrison (Nov 22 2024 at 12:14):
(My apologies for the long ago notation choice of \backcong...)
Emily Riehl (Nov 22 2024 at 18:43):
Dagur Asgeirsson said:
Note that equivalence of categories is denoted
≌
(\backcong
) and not≅
(\iso
/\cong
). Is that the symbol you wrote? It should typecheck between theDiscrete PEmpty
's (the other ones aren't categories).
Indeed, this was what I was missing! Hilarious.
Kim Morrison (Nov 23 2024 at 02:31):
Kim Morrison said:
(My apologies for the long ago notation choice of ≌ ```
If someone wants to fix it, I don't particularly see that it is too late. It would be a fun but probably unlikely experiment to try just overloading
≅
. But failing that, what would be better?
Joël Riou (Nov 23 2024 at 08:37):
I do not think that ≌/≅
needs a fix :-)
Emily Riehl (Nov 23 2024 at 19:34):
Agreed. It's clearly documented at the start of the file (which I didn't check). Lesson learned.
Kevin Buzzard (Nov 23 2024 at 19:36):
Mathematicians would not even distinguish the two symbols, this is just a mathlib gotcha.
Joël Riou (Nov 23 2024 at 19:54):
Mathematicians also use the same symbol ->
for a morphism and a functor. I am happy we do not conflate the two :-)
Mario Carneiro (Nov 23 2024 at 19:57):
I think Kevin is saying that a mathematician would not differentiate between the symbols ≌/≅
when writing. As far as I know, mathematicians do use clearly distinct symbols for equivalence and isomorphism, namely ≃
and ≅
respectively.
Mario Carneiro (Nov 23 2024 at 19:59):
I tend to agree that mathlib's deliberate use of unicode confusables is a bad habit
Kevin Buzzard (Nov 23 2024 at 20:40):
It's just one of those things you have to learn, like how every few months someone asks about why a | b
works for someone else and not for them, because they didn't realise that "divides" is \|
Kim Morrison (Nov 23 2024 at 22:44):
Mario Carneiro said:
I think Kevin is saying that a mathematician would not differentiate between the symbols
≌/≅
when writing. As far as I know, mathematicians do use clearly distinct symbols for equivalence and isomorphism, namely≃
and≅
respectively.
I dimly remember way back in the day when I settled on backcong
, going looking through unicode hoping for the third in the sequence ≃
, ≅
, ..., to use for the next categorical level. But I didn't find anything.
Jon Eugster (Jan 21 2025 at 08:45):
In coordination with @Emily Riehl I generalised these from simplicial sets to conical limit over a general enriched ordinary category: https://github.com/emilyriehl/infinity-cosmos/pull/78
@Dagur Asgeirsson would you have the chance to glimpse over the definitions and see if I did things right?
Is there any particular choice for the order of universe
s at the top?
I would create PR's to mathlib with these additions now
Dagur Asgeirsson (Jan 21 2025 at 08:59):
I took a quick look and it looks reasonable. You can ping me when the mathlib PR is ready and I can do a proper review on that. I think the name should contain the word Enriched
, maybe by putting it in the CategoryTheory.Enriched
namespace. Probably CategoryTheory.Enriched.IsLimit
is too confusing, so maybe CategoryTheory.Enriched.IsConicalLimit
or CategoryTheory.Enriched.IsEnrichedLimit
.
Dagur Asgeirsson (Jan 21 2025 at 09:00):
Also, when you open the mathlib PR, make sure to mirror the file structure of the ordinary limit API as much as possible
Jon Eugster (Jan 21 2025 at 09:02):
Thanks! I think Emily suggested IsConicalLimit
over IsEnrichedLimit
so maybe CategoryTheory.Enriched.IsConicalLimit
?
Emily Riehl (Jan 21 2025 at 16:14):
I like "conical" because in the future we will develop a more general theory of enriched limits, including cotensors (formalized by @Daniel Carranza) and more general weighted limits. Each of these deserve to be called "enriched limits" but the term "conical" distinguishes the enriched limits which have ordinary cone shapes.
Emily Riehl (Jan 21 2025 at 16:23):
@Dagur Asgeirsson and @Joël Riou do you have any suggestions for the CategoryTheory/Enriched
directory structure?
Right now mathlib has Basic.lean
(defining enriched categories) Ordinary.lean
(defining enriched ordinary categories) and other files like Opposite.lean
which develop opposite categories for both enriched categories and enriched ordinary categories. This seems reasonable to me (for now at least).
Following this, I'd suggest @Jon Eugster's InfinityCosmos/ForMathlib/Enriched/Ordinary/Limits
get filed as Mathlib/Enriched/ConicalLimits
.
Joël Riou (Jan 21 2025 at 16:39):
Emily Riehl said:
Dagur Asgeirsson and Joël Riou do you have any suggestions for the
CategoryTheory/Enriched
directory structure?
Ah, I have already merged #20903, but if a better option is found, we may proceed otherwise...
Emily Riehl (Jan 21 2025 at 16:51):
Ah, great, somehow I missed this. Glad to hear everyone else is ahead of me ;)
Emily Riehl (Jan 21 2025 at 18:46):
Two more organizational questions:
- at some point there is a namespace
isConicalLimit
. Should this beIsConicalLimit
? Are all namespaces in UpperCamelCase? - At the end of the
Limits
file (which I think should be renamedConicalLimits
) there are some special cases involving specific diagram shapes: terminal objects, products, and pullbacks. Should these be broken out into their own files? Should theHasConicalTerminal
get added to theIsConicalTerminal
file?
Emily Riehl (Jan 21 2025 at 18:46):
Finally, for the eventual PR to mathlib, how much should @Jon Eugster PR at a time?
Jon Eugster (Jan 22 2025 at 08:49):
Emily Riehl said:
Two more organizational questions:
- At the end of the
Limits
file (which I think should be renamedConicalLimits
) there are some special cases involving specific diagram shapes: terminal objects, products, and pullbacks. Should these be broken out into their own files? Should theHasConicalTerminal
get added to theIsConicalTerminal
file?
Dagur suggested to try mirroring the existing Limit-API as much as possible, therefore I figured this file would be split at least into Mathlib/CategoryTheory/Enriched/Ordinary/Limits/IsConicalLimit.lean
and Mathlib/CategoryTheory/Enriched/Ordinary/Limits/HasConicalLimit.lean
. I thought of putting them into this Enriched.Ordinal
folder because it all assume EnrichedOrdinaryCategory
. And I would look at mathlib to figure out how to split-up files around this specific diagram shapes and conical-terminal, too. Does that sound good?
Jon Eugster (Jan 22 2025 at 08:52):
Emily Riehl said:
- at some point there is a namespace
isConicalLimit
. Should this beIsConicalLimit
? Are all namespaces in UpperCamelCase?
I thought namespaces ought to match the definition/structure's name they are about, so they might be lower-case. (section
s are probably only upper-case, but not sure.) Although, I don't think it matters if the statements don't have that definition as explicit argument, because dot-notation won't be a thing anyways.
Jon Eugster (Jan 22 2025 at 09:07):
or would CategoryTheory/Enriched/Limits
be a better place?
Dagur Asgeirsson (Jan 22 2025 at 10:07):
Emily Riehl said:
Finally, for the eventual PR to mathlib, how much should Jon Eugster PR at a time?
I would start by opening a PR with all the material. Then it's often natural to split it into several PRs, perhaps one per new file added
Dagur Asgeirsson (Jan 22 2025 at 10:08):
The declaration is called IsConicalLimit
(upper camel case because it's a type), so the namespace should be called that as well. (but there is nothing wrong with namespaces in lower camel case)
Dagur Asgeirsson (Jan 22 2025 at 10:14):
Regarding files for the specific shapes, there is nothing wrong with one file for each shape. These will initially be very small files, but in the future we might want to develop more API for some of these shapes. I would suggest creating a Limits
folder inside Enriched
(or maybe inside Enriched/Ordinary
). Initially, we maybe don't need much of a folder structure inside the Enriched/Limits
folder, but that can always be changed later, e.g. if we end up with lots of files for specific shapes, we might create a Shapes
folder, etc.
Jon Eugster (Jan 22 2025 at 10:41):
Dagur Asgeirsson said:
The declaration is called
IsConicalLimit
(upper camel case because it's a type), so the namespace should be called that as well. (but there is nothing wrong with namespaces in lower camel case)
ah, I thought @Emily Riehl's question was about the namespace conicalLimit
which belongs to the def conicalLimit
above it and therefore would be lower case.
namespace IsConicalLimit
has always been upper case as you explained correctly :+1:
Dagur Asgeirsson (Jan 22 2025 at 10:42):
Right, they are both correct (analogous to IsLimit
and limit
)
Kevin Buzzard (Jan 22 2025 at 10:58):
What is the use of a lower case namespace? Probably means that you can never use dot notation, and somehow isn't that the point of namespaces?
Dagur Asgeirsson (Jan 22 2025 at 10:59):
Dot notation isn't the only point of namespaces, it's also a way of shortening names by opening the relevant namespace
Nick Ward (Jan 22 2025 at 18:08):
I will place a vote for putting things in Enriched/Limits
if we can get away with it. Mathlib.CategoryTheory.Enriched.Ordinary.Limits.Foo
starts to feel a bit long in my opinion.
Jon Eugster (Jan 22 2025 at 18:20):
Nick Ward said:
I will place a vote for putting things in
Enriched/Limits
sounds reasonable. I looked at the other files in Mathlib/CategoryTheory/Enriched
and basically all of them use EnrichedOrdinaryCategory
somewhere (if not exclusively).
Jon Eugster (Jan 22 2025 at 21:01):
There's no an entire PR series cummulating in: #20967
One missing point are references. @Dagur Asgeirsson did you have anything particularly when you wrote this for simplicial sets?
Dagur Asgeirsson (Jan 22 2025 at 21:56):
Great! I think I was just using the infinity-cosmos blueprint
Nick Ward (Jan 22 2025 at 22:04):
This is quite a well-organized stack of PRs. One for each :octopus: arm!
Emily Riehl (Jan 22 2025 at 22:05):
The standard reference is Kelly's book with conical limits appearing in section 3.8.
Nick Ward (Jan 22 2025 at 22:12):
@Jon Eugster can you help me understand what -- see Note [lower instance priority]
refers to? It seems this is a standard way to reference things in mathlib, but I do not know where to find such a note.
Jon Eugster (Jan 22 2025 at 22:20):
Nick Ward said:
Jon Eugster can you help me understand what
-- see Note [lower instance priority]
refers to? It seems this is a standard way to reference things in mathlib, but I do not know where to find such a note.
it's here. I believe these library notes ought to link but as far as I know nobody ever reimplemented that feature.
Nick Ward (Jan 22 2025 at 22:29):
Thank you! Apologies by the way if my limited PR comments have found their way to the wrong PRs in the series.
Jon Eugster (Jan 22 2025 at 22:31):
ah no worries, I'll have a look tomorrow and apply any suggestions to the correct PR. thanks for looking at them
Emily Riehl (Jan 22 2025 at 22:32):
@Jon Eugster what would you like us to do with the InfinityCosmos version of this PR? We could either (i) merge it now or (ii) let it be.
I don't want to add to your workflow; the mathlib PR is the main thing. So if (ii) is easiest that's fine.
But on the other hand, you've updated the InfinityCosmos/Basic
and InfinityCosmos/Isofibrations
files in a way I'd like to start using.
Jon Eugster (Jan 23 2025 at 08:53):
Emily Riehl said:
Jon Eugster what would you like us to do with the InfinityCosmos version of this PR? We could either (i) merge it now or (ii) let it be.
I'd be happy if you merge this now.
Emily Riehl (Jan 23 2025 at 14:42):
Merged! I didn't delete your branch, though, in case you still want it for some reason. But if not, please feel free to delete this yourself.
Thanks for all your work on this. Please feel free to @
me at any time if I can be helpful with the Mathlib PRs.
Last updated: May 02 2025 at 03:31 UTC