Skip to content
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(topology/sheaves/skyscraper): define skyscraper presheaves and calculate stalks #15934

Closed
wants to merge 48 commits into from

Conversation

jjaassoonn
Copy link
Collaborator


Open in Gitpod

Copy link
Collaborator

@alreadydone alreadydone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will take a closer look later!

src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
jjaassoonn and others added 3 commits August 22, 2022 15:09
Co-authored-by: Junyan Xu <junyanxumath@gmail.com>
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
point, then the skyscraper sheaf `𝓕` with value `A` is defined by `U ↦ A` if `p₀ ∈ U` and
`U ↦ *` if `p₀ ∉ A` where `*` is some terminal object.
-/
def skyscraper_sheaf : sheaf C X :=
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can probably get a shorter proof using Top.presheaf.is_sheaf_iff_is_sheaf_opens_le_cover. I might try to golf the other proofs later.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the universe level for Top.presheaf.is_sheaf_iff_is_sheaf_opens_le_cover is too small

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Though, it might not be useful to keep skyscraper_presheaf universe level depending on three universe levels u, v, w, because to calculate stalks, universe level needs to be restricted anyway.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh yes, but I would try to generalize the universe there. It's also better to fix the universe level of Top.presheaf to the (identical) Type (max w v u).

You might also generalize universe for stalk by using has_limits_of_size C as assumption.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

opens_le_cover generalized at #16214.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. I think you are right. So I think it makes sense to define Godement resolution in terms of skyscraper (no matter the explicit description or pushforward definition) so that
$$\mathcal{F} \to \prod_{x}\mathrm{Sky}(\mathcal{F}_x) \to \prod_x\mathrm{Sky}(\mathcal I_x)$$
can be easily shown to be a monomorphism into an Injective sheaf. ($\mathcal{I}_x$ comes from enough invectiveness and $\mathcal{F}_x$)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, so let's figure out which definition is the easiest to work with to show monomorphism. I think you meant to write Sky(I_x) instead of I_x? It should be easy to show the pushforward of a mono is a mono, using the fact that a (pre)sheaf morphism is mono iff it's a mono on every open (this is stated in Stacks for Set-valued (pre)sheaves, but presumably holds more generally (also for functor categories)?).

As for the first map being mono, it's also enough to use the stalk-skyscraper adjunction. Two morphisms G→F agree after composing with the unit F→Sky_x(F_x) iff the corresponding morphisms G_x→F_x under the adjunction agree, so it suffices to use the fact that a sheaf morphism is determined by the induced morphisms on stalks. This doesn't work for presheaves though; I assume the original proof also doesn't?

An independent issue: I think the docstring here is problematic, because the skyscraper may have nonzero (non-terminal) stalks at points other than p0, so it may not be supported on a single point.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, so let's figure out which definition is the easiest to work with to show monomorphism. I think you meant to write Sky(I_x) instead of I_x? It should be easy to show the pushforward of a mono is a mono, using the fact that a (pre)sheaf morphism is mono iff it's a mono on every open (this is stated in Stacks for Set-valued (pre)sheaves, but presumably holds more generally (also for functor categories)?).

Sheaf(C, X) morphism is mono iff it’s a mono on every open holds for every concrete category C that preserves pullback, this is in the other PR containing the sky-stalk adjunction. Under this assumption every morphism in C is injective iff it’s mono. This is the maximal generality I could think of

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An independent issue: I think the docstring here is problematic, because the skyscraper may have nonzero (non-terminal) stalks at points other than p0, so it may not be supported on a single point.

I thought supported don a single point p meant something like that F(U) is not zero if and only if p \in U. I have removed this phrase to clear confusion

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sheaf(C, X) morphism is mono iff it’s a mono on every open holds for every concrete category C that preserves pullback, this is in the other PR containing the sky-stalk adjunction.

I actually didn't find the exact statement in that PR, but I think you may use category_theory.nat_trans.mono_iff_mono_app combined with category_theory.Sheaf.hom.mono_iff_presheaf_mono that you introduced earlier.

src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
bors bot pushed a commit that referenced this pull request Aug 24, 2022
…verse (#16214)

+ Generalize universe levels in the sheaf condition `opens_le_cover` on topological spaces and its equivalence with the sheaf condition on sites, allowing three different universe parameters as in `Top.{w}`, `C : Type u` and `category.{v} C`. To be used in #15934.

+ Generalize universes for the sheaf condition `pairwise_intersection` on topological spaces. This sheaf condition also doesn't require any assumption on the category `C`, and its equivalence with `opens_le_cover` could also have universe levels at maximal generality; however, the proof `is_sheaf_opens_le_cover_iff_is_sheaf_pairwise_intersections` breaks due to the `small_category` restriction on [category_theory.functor.initial.is_limit_whisker_equiv](https://leanprover-community.github.io/mathlib_docs/category_theory/limits/final.html#category_theory.functor.initial.is_limit_whisker_equiv), which will take more work to fix, so we do not generalize the equivalence at this time.

+ Generalize universes for `Top.presheaf.pushforward`; pullback is not generalized because it would need `has_colimits_of_size`. `Top.sheaf.pushforward` is not yet generalized.

+ Fixate the universe level of [Top.presheaf](https://leanprover-community.github.io/mathlib_docs/topology/sheaves/presheaf.html#Top.presheaf) to be the same as [Top.sheaf](https://leanprover-community.github.io/mathlib_docs/topology/sheaves/sheaf.html#Top.sheaf).
Co-authored-by: Junyan Xu <junyanxumath@gmail.com>
@github-actions github-actions bot removed the awaiting-CI The author would like to see what CI has to say before doing more work. label Sep 5, 2022
@jjaassoonn jjaassoonn added the awaiting-CI The author would like to see what CI has to say before doing more work. label Sep 6, 2022
@github-actions github-actions bot removed the awaiting-CI The author would like to see what CI has to say before doing more work. label Sep 6, 2022
Copy link
Collaborator

@alreadydone alreadydone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, and I am happy with showing it's a sheaf in another PR.
I already approved this earlier, and I just pinged maintainers on Zulip yesterday; maybe you should instead request review from a maintainer?

Copy link
Member

@riccardobrasca riccardobrasca left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

What do you think about using a namespace? I think it would be nice to have sheaf.skyscraper, or something like that.

bors d+

src/category_theory/eq_to_hom.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
src/topology/sheaves/skyscraper.lean Outdated Show resolved Hide resolved
@bors
Copy link

bors bot commented Sep 26, 2022

✌️ jjaassoonn can now approve this pull request. To approve and merge a pull request, simply reply with bors r+. More detailed instructions are available here.

@leanprover-community-bot-assistant leanprover-community-bot-assistant added delegated The PR author may merge after reviewing final suggestions. and removed awaiting-review The author would like community review of the PR labels Sep 26, 2022
jjaassoonn and others added 2 commits September 26, 2022 11:02
Co-authored-by: Riccardo Brasca <riccardo.brasca@gmail.com>
@jjaassoonn
Copy link
Collaborator Author

jjaassoonn commented Sep 26, 2022

LGTM.

What do you think about using a namespace? I think it would be nice to have sheaf.skyscraper, or something like that.

bors d+

I am not entirely sure about the namespace thing, because with a namespace like namespace skyscraper_presheaf, I still think it makes sense to add protected attribute to lemmas/defs, for example
skyscraper_presheaf.cocone_of_specializes after opening skyscraper_presheaf is just cocoon_of_specializes which is kind of confusing. @riccardobrasca

@riccardobrasca
Copy link
Member

LGTM.
What do you think about using a namespace? I think it would be nice to have sheaf.skyscraper, or something like that.
bors d+

I am not entirely sure about the namespace thing, because with a namespace like namespace skyscraper_presheaf, I still think it makes sense to add protected attribute to lemmas/defs, for example skyscraper_presheaf.cocone_of_specializes after opening skyscraper_presheaf is just cocoon_of_specializes which is kind of confusing. @riccardobrasca

I totally agree, I was thinking more to a sheaf namespace. I really don't know, at some point we will hopefully have a lot of results about sheaves and friends, but I see that currently the category_theory namespace is used, as category_theory.presheaf_to_Sheaf.

@jjaassoonn
Copy link
Collaborator Author

LGTM.
What do you think about using a namespace? I think it would be nice to have sheaf.skyscraper, or something like that.
bors d+

I am not entirely sure about the namespace thing, because with a namespace like namespace skyscraper_presheaf, I still think it makes sense to add protected attribute to lemmas/defs, for example skyscraper_presheaf.cocone_of_specializes after opening skyscraper_presheaf is just cocoon_of_specializes which is kind of confusing. @riccardobrasca

I totally agree, I was thinking more to a sheaf namespace. I really don't know, at some point we will hopefully have a lot of results about sheaves and friends, but I see that currently the category_theory namespace is used, as category_theory.presheaf_to_Sheaf.

Put them under category_theory seems a little bit weird to me, there is a Sheaf namespace about grothendieck topologies which this does not apply. Maybe we keep the namespace as the current form and refactor it when proven necessary?

@riccardobrasca
Copy link
Member

LGTM.
What do you think about using a namespace? I think it would be nice to have sheaf.skyscraper, or something like that.
bors d+

I am not entirely sure about the namespace thing, because with a namespace like namespace skyscraper_presheaf, I still think it makes sense to add protected attribute to lemmas/defs, for example skyscraper_presheaf.cocone_of_specializes after opening skyscraper_presheaf is just cocoon_of_specializes which is kind of confusing. @riccardobrasca

I totally agree, I was thinking more to a sheaf namespace. I really don't know, at some point we will hopefully have a lot of results about sheaves and friends, but I see that currently the category_theory namespace is used, as category_theory.presheaf_to_Sheaf.

Put them under category_theory seems a little bit weird to me, there is a Sheaf namespace about grothendieck topologies which this does not apply. Maybe we keep the namespace as the current form and refactor it when proven necessary?

OK, let's do that.

@jjaassoonn
Copy link
Collaborator Author

bors r+

bors bot pushed a commit that referenced this pull request Sep 26, 2022
@bors
Copy link

bors bot commented Sep 26, 2022

Build failed (retrying...):

@bors
Copy link

bors bot commented Sep 26, 2022

Pull request successfully merged into master.

Build succeeded:

@bors bors bot changed the title feat(topology/sheaves/skyscraper): define skyscraper presheaves and calculate stalks [Merged by Bors] - feat(topology/sheaves/skyscraper): define skyscraper presheaves and calculate stalks Sep 26, 2022
@bors bors bot closed this Sep 26, 2022
Algebraic geometry automation moved this from In progress to Done Sep 26, 2022
@bors bors bot deleted the jjaassoonn/sky_def branch September 26, 2022 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
delegated The PR author may merge after reviewing final suggestions. t-algebraic-geometry Algebraic geometry
Projects
Development

Successfully merging this pull request may close these issues.

None yet

5 participants