New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - feat(category_theory/sites/*): Dense subsite #9694
Conversation
Since you are working in this area, I should point out to you the known errata in Johnstone's definitions in this area: https://ncatlab.org/nlab/show/dense+sub-site#problems_with_another_definition, and further that the definitions of the comparison lemma are different across the Elephant, nLab, stacks, EGA and Caramello's topos text. My suggestion is to make sure you have a compiling version of the Comparison Lemma before merging too many definitions. |
@erdOne I don't know this part of category theory too well. Bhavik's suggestion sounds like a good one. Can you please point out once you have a sorry-free proof of that comparison lemma (and where to find it)? |
There is a sorry free proof of the comparison lemma over at #9785 mathlib/src/category_theory/sites/comparison_lemma.lean Lines 192 to 202 in 2bbac6f
|
Co-authored-by: Bhavik Mehta <bhavikmehta8@gmail.com>
Hi @erdOne , thanks for the work. I now understand how to use this PR to extend a B-sheaf hom (I think I just hadn't read the code carefully enough), and would like to use this in my Gamma-Spec adjunction PR instead of my basis_le approach. I only have two issues with this PR:
In addition, I would like to develop API in the situation of topological spaces, giving the hom extension |
lgtm! My Gamma-Spec adjunction work #9802 has been refactored to use this PR so I'm also eager to get this merged. |
Co-authored-by: Johan Commelin <johan@commelin.net>
Co-authored-by: Johan Commelin <johan@commelin.net>
Co-authored-by: Johan Commelin <johan@commelin.net>
begin | ||
have α' := sheaf_yoneda_hom H α, | ||
exact { app := λ X, yoneda.preimage (α'.app X), | ||
naturality' := λ X Y f, yoneda.map_injective (by simpa using α'.naturality f) } | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you can do
begin | |
have α' := sheaf_yoneda_hom H α, | |
exact { app := λ X, yoneda.preimage (α'.app X), | |
naturality' := λ X Y f, yoneda.map_injective (by simpa using α'.naturality f) } | |
end | |
have α' := sheaf_yoneda_hom H α, | |
{ app := λ X, yoneda.preimage (α'.app X), | |
naturality' := λ X Y f, yoneda.map_injective (by simpa using α'.naturality f) } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not really, but let ... in
works for me.
@[simps] noncomputable | ||
def sheaf_yoneda_hom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : | ||
ℱ ⋙ yoneda ⟶ ℱ'.val ⋙ yoneda := | ||
begin | ||
let α := sheaf_coyoneda_hom H α, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does simps
do with the let statement? Does the output of simps?
look the way you want it to be?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It actually gives quite a decent looking lemma.
But now that I think about it, I probably want to make the implementation details more opaque, so I removed them.
I suggested one more change. After that, I this can be merged. Thanks! bors d+ |
✌️ erdOne can now approve this pull request. To approve and merge a pull request, simply reply with |
Co-authored-by: Johan Commelin <johan@commelin.net>
bors r+ |
Defined `cover_dense` functors as functors into sites such that each object can be covered by images of the functor. Proved that for a `cover_dense` functor `G`, any morphisms of presheaves `G ⋙ ℱ ⟶ G ⋙ ℱ'` can be glued into a morphism `ℱ ⟶ ℱ'`. Co-authored-by: erdOne <36414270+erdOne@users.noreply.github.com> Co-authored-by: Andrew Yang <36414270+erdOne@users.noreply.github.com>
Pull request successfully merged into master. Build succeeded: |
def sheaf_iso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ ≅ ℱ' := | ||
{ hom := (presheaf_iso H i).hom, | ||
inv := (presheaf_iso H i).inv, | ||
hom_inv_id' := (presheaf_iso H i).hom_inv_id, | ||
inv_hom_id' := (presheaf_iso H i).inv_hom_id } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This and another sheaf_iso above don't follow the same format. And can't this simply be presheaf_iso H i
with some arguments made explicit? Or is it for the purpose of simps
that you wrote down the individual fields? (I only noticed this after seeing a review message sent to my mailbox.)
Defined
cover_dense
functors as functors into sites such that each object can be covered by images of the functor.Proved that for a
cover_dense
functorG
, any morphisms of presheavesG ⋙ ℱ ⟶ G ⋙ ℱ'
can be glued into amorphism
ℱ ⟶ ℱ'
.