[Merged by Bors] - feat(CategoryTheory): the internal hom with the monoidal unit is the identity#17065
[Merged by Bors] - feat(CategoryTheory): the internal hom with the monoidal unit is the identity#17065emilyriehl wants to merge 7 commits intomasterfrom
Conversation
PR summary 343350d6bfImport changes for modified filesNo significant changes to the import graph Import changes for all files
Declarations diff
You can run this locally as follows## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>
## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>The doc-module for |
|
@dagurtomas and @adamtopaz this is the issue we discussed. I left this as a draft because of the questions (1) and (2) above. |
|
For (1), it's because it uses For (2), I would supply |
|
Regarding computability, note that CategoryTheory.Adjunction.natIsoEquiv is computable, so These two APIs should really be merged at some point, see the TODO in the file Adjunction.Unique. I wrote that part of the uniqueness file without knowing I was duplicating API, then when I discovered it it turned out to be nontrivial to deduplicate |
|
Thanks @dagurtomas. I would like to merge your branch with this one. How do I do this? |
|
Thanks also for pointing out the issue with the way I defined natIsoEquiv. When I get a moment (sometime this week) I'll go back into mates and do that part of the TODO from the Adjunction.Unique file. |
|
|
The idea of having |
This returns the error But no need to reply. I just manually recreated your suggestions. |
Thanks for the explanation. I guess I hadn't quite figured out how to interpret typeclass arguments. I guess the idea is that even though we might specify a particular instance of By the way, does Lean allow you to label two distinct terms of a given type as instances? |
|
Thanks! maintainer merge |
|
🚀 Pull request has been placed on the maintainer queue by dagurtomas. |
|
Regarding merging branches, I guess my suggestion requires you to have a local copy of my branch. So for future reference, I think it would have worked after running |
|
maintainer merge |
|
🚀 Pull request has been placed on the maintainer queue by dagurtomas. |
|
bors merge |
…identity (#17065) In a closed monoidal category, the internal hom defined by mapping out of the monoidal unit is naturally isomorphic to the identity. This specializes to an analogous result about exponentiating with the terminal object in a cartesian closed category. Co-authored-by: [Dagur Asgeirsson](https://github.com/dagurtomas)
|
Pull request successfully merged into master. Build succeeded: |
Yeah essentially - we can give an instance of
Yes. In this example, we could have two different constructions of the right adjoint, which are not equal on the nose. It's usually not a good idea to do this, but it's possible. |
…identity (#17065) In a closed monoidal category, the internal hom defined by mapping out of the monoidal unit is naturally isomorphic to the identity. This specializes to an analogous result about exponentiating with the terminal object in a cartesian closed category. Co-authored-by: [Dagur Asgeirsson](https://github.com/dagurtomas)
In a closed monoidal category, the internal hom defined by mapping out of the monoidal unit is naturally isomorphic to the identity. This specializes to an analogous result about exponentiating with the terminal object in a cartesian closed category.
Co-authored-by: Dagur Asgeirsson
UPDATE: The questions raised here have been answered in the comments below. This is now ready for review.
There are two things I don't understand about this code.
(1) Why must
MonoidalClosed.unitNatIsobe marked uncomputable?(2) Which of
expTerminalNatIsoorexpTerminalNatIso'is better?For (2), I'd assumed it would be more useful not to have to supply a proof that the terminal object is exponentiable. But when I gave an explicit proof in (1) I wasn't able to extract the component used to prove
expTerminalIsoSelf, which existed already in the form that it's currently stated in.-->