Skip to content

Conversation

@kckennylau
Copy link
Collaborator

@kckennylau kckennylau commented Jun 18, 2025

@github-actions github-actions bot added the t-algebraic-geometry Algebraic geometry label Jun 18, 2025
@github-actions
Copy link

github-actions bot commented Jun 18, 2025

PR summary 7e091d1f76

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.AlgebraicGeometry.ProjectiveSpace (new file) 2299

Declarations diff

+ AlgHom.liftBaseChange
+ AlgHom.liftBaseChange_tmul
+ Algebra.TensorProduct.ext_ring
+ Away.lof
+ Away.lof_surjective
+ Away.map
+ Away.map_lof
+ Away.map_mk
+ Away.mapₐ
+ Away.mapₐ_lof
+ Away.mapₐ_mk
+ Away.val_lof
+ DirectSum.IsInternal.baseChange
+ DirectSum.IsInternal.toBaseChange_bijective
+ DirectSum.algEquivOfComponents
+ DirectSum.baseChangeAlgEquiv
+ DirectSum.baseChangeLEquiv
+ DirectSum.degree
+ DirectSum.lequivOfComponents
+ Function.Bijective.of_comp_of_surjective
+ GAlgebra.tensorProduct
+ GCommMonoid.tensorProduct
+ GCommSemiring.tensorProduct
+ GMonoid.tensorProduct
+ GOne.tensorProduct
+ GradedAlgEquiv
+ GradedAlgEquiv.admissible
+ GradedAlgHom
+ GradedAlgHom.zero
+ HomogeneousLocalization.Away.proj₀
+ HomogeneousLocalization.Away.proj₀_mk
+ HomogeneousLocalization.Away.proj₀_mk'
+ HomogeneousLocalization.proj₀
+ HomogeneousLocalization.proj₀_mk
+ HomogeneousLocalization.proj₀_val
+ IsLocalization.algHom_ext
+ IsLocalization.tensorEquiv
+ Localization.Away.tensorEquiv
+ Localization.Away.tensorEquiv_mk
+ Localization.algHom_ext
+ Localization.localRingHom_mk
+ Localization.tensorEquiv
+ NumDenSameDeg.map
+ Proj.awayι_comp_toSpec
+ Proj.baseChangeIsoComponent
+ Proj.baseChangeIsoComponent_hom_comp_pullback_fst
+ Proj.baseChangeIsoComponent_hom_comp_pullback_snd
+ Proj.map_toSpec
+ Proj.map_toTensor_toSpec
+ Proj.openCoverBaseChange
+ Proj.openCoverPullback
+ Proj.opensRange_openCoverPullback
+ Proj.toSpec
+ ProjectiveSpace
+ SpecIso
+ Submodule.toBaseChange
+ Submodule.toBaseChange_surjective
+ Submodule.toBaseChange_tmul_coe
+ TensorProduct.congr_cast
+ _root_.AlgebraicGeometry.Scheme.resLE_app_top
+ _root_.AlgebraicGeometry.ext_to_Spec
+ _root_.AlgebraicGeometry.Γ_map_Spec_map_ΓSpecIso_inv
+ _root_.CategoryTheory.Limits.pullback.mapIso
+ _root_.GradedAlgEquiv.refl_toGradedAlgHom
+ _root_.GradedAlgEquiv.trans_toGradedAlgHom
+ _root_.GradedAlgHom.comp
+ _root_.GradedAlgHom.comp_admissible
+ _root_.GradedAlgHom.comp_apply
+ _root_.GradedAlgHom.id
+ _root_.GradedAlgHom.id_admissible
+ _root_.GradedAlgHom.id_apply
+ _root_.GradedAlgebra.toTensor
+ _root_.GradedAlgebra.toTensor_admissible
+ _root_.HomogeneousIdeal.map_comp
+ _root_.MvPolynomial.algebraTensorGAlgEquiv
+ addHom
+ algebraMap_apply
+ algebraMap_apply'
+ algebraMap_eq'
+ algebraMap_to_zero
+ apply_symm_apply
+ awayBaseChange
+ awayBaseChange_lof
+ awayBaseChange_symm_tmul
+ awayToSection_comp_appLE
+ away_map_comp_fromZeroRingHom
+ awayι_comp_map
+ awayι_comp_ofProjTensor
+ awayι_comp_projTensorProduct
+ baseChangeLEquiv
+ baseChange_iSupEqTop
+ coe_apply_congr
+ coe_comap
+ coe_toGradedAlgHom
+ coe_toIdeal
+ coe_toRingEquiv
+ coe_toRingHom
+ comap.toFun
+ comapFun
+ congr_mk
+ congr_symm
+ decompose_map
+ decompose_of_homogeneous
+ degree_mul
+ degree_of_mem
+ ext
+ extₗ
+ funLike
+ gc_map_comap
+ germ_map_sectionInBasicOpen
+ gmul_assoc
+ gmul_comm
+ gmul_one
+ gmul_tensor_product
+ gone
+ image_comp
+ image_eq_iff_eq_preimage
+ image_id'
+ image_inv
+ image_inv'
+ image_preimage
+ instance (priority := 100) : EquivLike (𝒜₁ ≃ᵍᵃ 𝒜₂) A₁ A₂
+ instance (priority := 100) : RingEquivClass (𝒜₁ ≃ᵍᵃ 𝒜₂) A₁ A₂
+ instance : Algebra R₀ (HomogeneousLocalization 𝒜 S)
+ instance : Algebra R₀ (𝒜 0)
+ instance : GradedAlgebra (fun n ↦ (𝒜 n).baseChange S)
+ instance : IsIso (ofProjTensor 𝒜 S)
+ instance : IsScalarTower R (𝒜 0) (Localization S)
+ instance : IsScalarTower R₀ (𝒜 0) (HomogeneousLocalization 𝒜 S)
+ instance : IsScalarTower R₀ R (HomogeneousLocalization 𝒜 S)
+ instance : SetLike.GradedMonoid (fun n ↦ (𝒜 n).baseChange S)
+ instance _root_.ULift.algebraLeft {R A : Type*} [CommSemiring R] [Semiring A] [Algebra R A] :
+ irrelevant_eq_iSup
+ irrelevant_le
+ irrelevant_toAddSubmonoid_le
+ irrelevant_toIdeal_le
+ isIso_of_cover
+ isLocalHom_localRingHom
+ isLocallyFraction_comapFun
+ le_comap_of_map_le
+ localRingHom
+ localRingHom_comp_stalkIso
+ localRingHom_mk
+ lof
+ map'
+ map'_mk
+ mapAffineOpenCover
+ map_coe_decompose
+ map_comp
+ map_comp_toSpecZero
+ map_id
+ map_le_iff_le_comap
+ map_le_of_le_comap
+ map_mem
+ map_preimage_basicOpen
+ mapₐ
+ mapₐ_mk
+ mem_degree
+ mem_irrelevant_of_mem
+ mk_smul
+ ofProjTensor
+ one_gmul
+ projTensorProduct
+ projTensorProduct_hom_comp_pullback_fst
+ projTensorProduct_hom_comp_pullback_snd
+ projTensorProduct_image_basicOpen
+ refl
+ ringHomClass
+ self_trans_symm
+ sheafedSpaceMap
+ symm
+ symm_trans_self
+ toIdeal_le_toIdeal_iff
+ toRingHom_injective
+ trans
+ trans_apply
+ val_fromZeroRingHom
+ val_localRingHom
+ val_prod
+ val_sectionInBasicOpen_apply
+ val_sum
+ ι_comp_map
++ congr
++ instance {ι R A : Type*} [CommRing R] [CommRing A] [Algebra R A] [DecidableEq ι] [AddCommMonoid ι]
++ map
+++ comap

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 script/declarations_diff.sh contains some details about this script.


Increase in tech debt: (relative, absolute) = (1.02, 0.34)
Current number Change Type
768 7 erw
3 1 maxHeartBeats modifications

Current commit 4772397bdb
Reference commit 7e091d1f76

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).


/-
TODO:
- `AlgebraicGeometry.ProjectiveSpace.SpecIso`: `ℙ(n; Spec R) ≅ Proj R[n]`
Copy link
Member

Choose a reason for hiding this comment

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

I would like to see some basic API in this PR for sanity check, in particular this thing should probably be in this PR.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

This is a bit hard at the moment, it's the main result in my personal branch and it takes 1000 lines. There's basically a lot of explicit maps between polynomial rings that are missing from the library, as the construction is by defining open covers on both sides, and using also isomorphisms on the intersections (i.e. pullbacks).

Does my personal branch work as the sanity check?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Is this really the proof you want? I would have assumed that this should follow once you obtain the functor of points for Proj Z[n] (whose proof hopefully generalizes to Proj R[n] immediately)? Although that is indeed a lot of work.

Copy link
Collaborator

@callesonne callesonne Jun 21, 2025

Choose a reason for hiding this comment

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

Or actually shouldn't you show that Proj is compatible with base change (so you should not need to talk about maps between polynomial rings)?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

These two alternative approaches are both out of scope for this PR which is to just get the basic definition in. Generalisations or not, I think we still ultimately want P(n; S) to exist.

@kckennylau kckennylau requested a review from callesonne June 20, 2025 08:15

/-- `ℙ(n; S)` is the projective `n`-space over a scheme `S`.
Note that `n` is an arbitrary index type (e.g. `ULift (Fin m)`). -/
def ProjectiveSpace (n : Type u) (S : Scheme.{u}) : Scheme.{u} :=
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
def ProjectiveSpace (n : Type u) (S : Scheme.{u}) : Scheme.{u} :=
def ProjectiveSpace : Scheme.{u} :=

You already have these as variables right? Or is this done for readability? Because you have not written them down in the other definitions.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

It is for readability for the public-facing / main definitions

def ProjectiveSpace (n : Type u) (S : Scheme.{u}) : Scheme.{u} :=
pullback (terminal.from S) (terminal.from (Proj ℤ[n].{u}))

@[inherit_doc] scoped notation "ℙ("n"; "S")" => ProjectiveSpace n S
Copy link
Collaborator

Choose a reason for hiding this comment

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

I would also introduce notation "ℙ("n")" for the case S = \mathbb{Z} (or rather for Proj ℤ[n].{u}).

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 similar to the case for AffineSpace, these details are not meant to be public-facing.

@kckennylau kckennylau changed the title feat(AlgebraicGeometry): define Projective Space (WIP) feat(AlgebraicGeometry): define Projective Space Oct 6, 2025
@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Oct 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) t-algebraic-geometry Algebraic geometry WIP Work in progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants