English
The span over the zero-degree subspace of 𝒜 generated by the elements of the form Away.mk ... equals the whole space.
Русский
Образующая подпространство, порождаемого элементами вида Away.mk ..., равна всему пространству.
LaTeX
$$$\\operatorname{span}_{\\mathcal{A}0}\\{\\mathrm{Away.mk} \\;\\cdots \\} = \\top$$$
Lean4
/-- Let `𝒜` be a graded algebra, finitely generated (as an algebra) over `𝒜₀` by `{ vᵢ }`,
where `vᵢ` has degree `dvᵢ`.
If `f : A` has degree `d`, then `𝒜_(f)` is generated (as a module) over `𝒜₀` by
elements of the form `(∏ i, vᵢ ^ aᵢ) / fᵃ` such that `∑ aᵢ • dvᵢ = a • d`.
-/
theorem span_mk_prod_pow_eq_top {f : A} {d : ι} (hf : f ∈ 𝒜 d) {ι' : Type*} [Fintype ι'] (v : ι' → A)
(hx : Algebra.adjoin (𝒜 0) (Set.range v) = ⊤) (dv : ι' → ι) (hxd : ∀ i, v i ∈ 𝒜 (dv i)) :
Submodule.span (𝒜 0)
{(Away.mk 𝒜 hf a (∏ i, v i ^ ai i) (hai ▸ SetLike.prod_pow_mem_graded _ _ _ _ fun i _ ↦ hxd i) :
Away 𝒜 f) | (a :
ℕ) (ai : ι' → ℕ) (hai : ∑ i, ai i • dv i = a • d)} =
⊤ :=
by
by_cases HH : Subsingleton (HomogeneousLocalization.Away 𝒜 f)
· exact Subsingleton.elim _ _
rw [← top_le_iff]
rintro x -
obtain ⟨⟨n, ⟨a, ha⟩, ⟨b, hb'⟩, ⟨j, (rfl : _ = b)⟩⟩, rfl⟩ := mk_surjective x
by_cases hfj : f ^ j = 0
· exact (HH (HomogeneousLocalization.subsingleton _ ⟨_, hfj⟩)).elim
have : DirectSum.decompose 𝒜 a n = ⟨a, ha⟩ := Subtype.ext (DirectSum.decompose_of_mem_same 𝒜 ha)
simp_rw [← this]
clear this ha
have : a ∈ Submodule.span (𝒜 0) (Submonoid.closure (Set.range v)) :=
by
rw [← Algebra.adjoin_eq_span, hx]
trivial
induction this using Submodule.span_induction with
| mem a ha' =>
obtain ⟨ai, rfl⟩ := Submonoid.exists_of_mem_closure_range _ _ ha'
clear ha'
by_cases H : ∑ i, ai i • dv i = n
· apply Submodule.subset_span
refine ⟨j, ai, H.trans ?_, ?_⟩
· exact DirectSum.degree_eq_of_mem_mem 𝒜 hb' (SetLike.pow_mem_graded j hf) hfj
· ext
simp only [val_mk, Away.val_mk]
congr
refine (DirectSum.decompose_of_mem_same _ ?_).symm
exact H ▸ SetLike.prod_pow_mem_graded _ _ _ _ fun i _ ↦ hxd i
· convert zero_mem (Submodule.span (𝒜 0) _)
ext
have : (DirectSum.decompose 𝒜 (∏ i : ι', v i ^ ai i) n).1 = 0 :=
by
refine DirectSum.decompose_of_mem_ne _ ?_ H
exact SetLike.prod_pow_mem_graded _ _ _ _ fun i _ ↦ hxd i
simp [this, Localization.mk_zero]
| zero =>
convert zero_mem (Submodule.span (𝒜 0) _)
ext; simp [Localization.mk_zero]
| add s t hs ht hs' ht' =>
convert add_mem hs' ht'
ext; simp [← Localization.add_mk_self]
| smul r x hx hx' =>
convert Submodule.smul_mem _ r hx'
ext
simp [Algebra.smul_def, algebraMap_eq, fromZeroRingHom, Localization.mk_mul, -decompose_mul,
coe_decompose_mul_of_left_mem_zero 𝒜 r.2]