The identification of the degree zero homogeneous polynomials with the coefficient ring.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
universe u
open CategoryTheory CategoryTheory.Limits TopologicalSpace MvPolynomial HomogeneousLocalization
namespace AlgebraicGeometry
attribute [local instance] MvPolynomial.gradedAlgebra
namespace ProjSpace
section PnSetup
variable (R : Type u) [CommRing R] (n : ℕ)
local notation "𝒜" => MvPolynomial.homogeneousSubmodule (Fin (n + 1)) Rdef grad0Equiv : R ≃+* (𝒜 0) where
toFun r := ⟨C r, (mem_homogeneousSubmodule 0 _).mpr (isHomogeneous_C _ r)⟩
invFun p := MvPolynomial.constantCoeff p.1
left_inv r := by simp
right_inv p := by
ext : 1
have hp : p.1.IsHomogeneous 0 := (mem_homogeneousSubmodule 0 _).mp p.2
ext d
rcases eq_or_ne d 0 with rfl | hd
· simp [MvPolynomial.constantCoeff]
· rw [MvPolynomial.coeff_C, ite_eq_right (Ne.symm hd)]
by_contra h
refine hd (Finsupp.ext fun i => ?_)
have hdeg : (Finsupp.weight (1 : Fin (n + 1) → ℕ)) d = 0 := hp (fun h0 => h h0.symm)
simp only [Finsupp.weight_apply, Pi.one_apply, smul_eq_mul, mul_one,
Finsupp.sum] at hdeg
by_cases hi : i ∈ d.support
· exact (Finset.sum_eq_zero_iff_of_nonneg (fun _ _ => Nat.zero_le _)).mp hdeg i hi
· exact Finsupp.notMem_support_iff.mp hi
map_mul' a b := by ext : 1; simp
map_add' a b := by ext : 1; simp