10.4 Snake lemma to 10.23 Glueing properties
Section10.4 Snake lemma#
Section 10.4 of the Stacks Project, Tag 07JV. 1 tag here is carried by 1 registered declaration, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 07JW, a lemma
Tag 07JW in the Stacks Project.
Declarations registered for the tag:
CategoryTheory.ShortComplex.SnakeInput.snake_lemmaregistered withadd_to_stacksin StacksCore/Algebra/Homology/ShortComplex/SnakeLemma.lean, line 9 (StacksCore).
Sources
Section10.5 Finite modules and finitely presented modules#
Section 10.5 of the Stacks Project, Tag 0517. 5 tags here are carried by 5 declarations of the repository (all in StacksCore) and 3 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0518, a definition
Tag 0518 in the Stacks Project.
Declarations registered for the tag:
Module.FinitePresentationregistered withadd_to_stacksin StacksCore/Algebra/Module/FinitePresentation.lean, line 10 (StacksCore): “part 2”. References: EGA 0 (1.0.5); EGA IV (2.5.3); SGA 4 VI (5.6), “special case”; SGA 5 IIIB (5.10); SGA 6 I (2.8), “special case”.Module.Finiteregistered withadd_to_stacksin StacksCore/RingTheory/Finiteness/Defs.lean, line 14 (StacksCore): “part 1”. References: EGA 0 (10.3.1.2); EGA 0 (1.0.5); EGA II (6.3.1); EGA III (4.4.7); EGA III (7.4.6); EGA III (7.9.1); EGA IV (6.1.3); EGA IV (7.2.4); EGA IV (14.5.5); EGA IV (2.5.3); EGA IV (18.3.2.1); SGA 1 I (2.1); SGA 3 VIII (3.4); SGA 3 XXI (1.1.1), “partial”; SGA 4 VI (5.6), “special case”; SGA 4 XVII (5.5.6.3); SGA 4½ Rapport (4.11); SGA 5 X (3.1), “partial”; SGA 6 I (1.2), “special case”; SGA 6 I (1.3), “special case”; SGA 6 I (2.8), “special case”; SGA 6 II (2.2.10).
Tag 07JX, a lemma
Tag 07JX in the Stacks Project.
Module.projective_iff_lift_map_range_le, a theorem in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/Projective.lean, line 17. References: SGA 5 XV (3.Lemma3), “more general”; SGA 6 I (1.3), “more general”.
This is a generalisation of 07JX to an characterization of projective modules, the forward direction is exactly what 07JX states.
theorem Module.projective_iff_lift_map_range_le
{R : Type u} [Semiring R] {P : Type v} [AddCommMonoid P] [Module R P] [Small.{v} R] :
Module.Projective R P ↔ ∀ {M N : Type v} [AddCommMonoid M] [AddCommMonoid N] [Module R M]
[Module R N] (α : P →ₗ[R] M) (β : N →ₗ[R] M), LinearMap.range α ≤ LinearMap.range β →
∃ γ : P →ₗ[R] N, α = β.comp γ
Tag 0519, a lemma
Tag 0519 in the Stacks Project.
Module.FinitePresentation.of_exact_fst, a lemma in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/FinitePresentation.lean, line 26. The attribute's comment: “2”.
lemma Module.FinitePresentation.of_exact_fst [Module.FinitePresentation R M1]
[Module.FinitePresentation R M3] :
Module.FinitePresentation R M2
Module.FinitePresentation.of_exact_third, a lemma in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/FinitePresentation.lean, line 34. The attribute's comment: “4”. References: EGA 0 (1.0.5), “partial”.
lemma Module.FinitePresentation.of_exact_third [Module.Finite R M1]
[Module.FinitePresentation R M2] :
Module.FinitePresentation R M3
Module.Finite.of_exact_left, a lemma in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/FinitePresentation.lean, line 43. The attribute's comment: “5”.
lemma Module.Finite.of_exact_left [Module.Finite R M2]
[Module.FinitePresentation R M3] :
Module.Finite R M1
Tag 00KZ, a lemma
Tag 00KZ in the Stacks Project.
Module.Finite.exists_relSeries_isQuotientEquivQuotientCyclic, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Ideal/AssociatedPrime/Finiteness.lean, line 78.
Stacks 00KZ. Let
Rbe a ring andMa finiteR-module. ThenMadmits a finite filtration0 = M₀ ≤ M₁ ≤ ⋯ ≤ Mₙ = M, packaged as aRelSeriesofSubmodule.IsQuotientEquivQuotientCyclic, whose terms are finitely generated and whose successive quotientsMᵢ₊₁ ⧸ Mᵢare cyclic, i.e. each isomorphic toR ⧸ Iᵢfor some idealIᵢ.The quotients are cyclic but not necessarily simple, so this is a filtration rather than a composition series in the sense of
CompositionSeries(which requires simple quotients, hence finite length).
theorem Module.Finite.exists_relSeries_isQuotientEquivQuotientCyclic (R M : Type*) [Ring R]
[AddCommGroup M] [Module R M] [Module.Finite R M] :
∃ X : RelSeries {(N₁, N₂) | N₁.IsQuotientEquivQuotientCyclic N₂},
X.head = (⊥ : Submodule R M) ∧ X.last = ⊤ ∧ ∀ i, Module.Finite R (X i)
Tag 0560, a lemma
Tag 0560 in the Stacks Project.
Declarations registered for the tag:
Module.Finite.of_restrictScalars_finiteregistered withadd_to_stacksin StacksCore/RingTheory/Finiteness/Basic.lean, line 11 (StacksCore).
Sources
Section10.6 Ring maps of finite type and of finite presentation#
Section 10.6 of the Stacks Project, Tag 00F2. 4 tags here are carried by 1 declaration of the repository (in StacksFrontier) and 7 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00F3, a definition
Tag 00F3 in the Stacks Project.
Declarations registered for the tag:
RingHom.FinitePresentationregistered withadd_to_stacksin StacksCore/RingTheory/FinitePresentation.lean, line 10 (StacksCore). References: EGA IV (1.4.1); SGA 1 VIII (3.6).RingHom.FiniteTyperegistered withadd_to_stacksin StacksCore/RingTheory/FiniteType.lean, line 14 (StacksCore). References: EGA 0 (1.0.5); EGA I (6.3.1), “(P)”; EGA IV (1.3.1).
Tag 00F4, a lemma
Tag 00F4 in the Stacks Project.
Declarations registered for the tag:
RingHom.FinitePresentation.compregistered withadd_to_stacksin StacksCore/RingTheory/FinitePresentation.lean, line 11 (StacksCore). References: EGA IV (1.4.3), “(ii), affine schemes”; EGA IV (1.6.2), “(ii), affine case”; SGA 1 VIII (3.6), “special case”.RingHom.FinitePresentation.of_comp_finiteTyperegistered withadd_to_stacksin StacksCore/RingTheory/FinitePresentation.lean, line 12 (StacksCore). References: EGA IV (1.4.3), “(v), affine schemes”; EGA IV (1.6.2), “(v), affine case”.RingHom.FiniteType.compregistered withadd_to_stacksin StacksCore/RingTheory/FiniteType.lean, line 15 (StacksCore). References: EGA I (6.3.4), “clause (ii), affine case”; EGA I (6.6.6), “(ii), affine schemes”; EGA I (10.13.5), “(i), special case”; EGA IV (1.3.1); EGA IV (1.5.4), “(ii) for affine schemes”.RingHom.FiniteType.of_comp_finiteTyperegistered withadd_to_stacksin StacksCore/RingTheory/FiniteType.lean, line 16 (StacksCore). References: EGA I (6.3.4), “clause (v), affine case”; EGA I (6.3.6), “affine case”; EGA I (6.6.6), “(v), affine schemes”; EGA IV (10.10.3), “more general”; EGA IV (1.5.4), “special case”.
Tag 00R2, a lemma
Tag 00R2 in the Stacks Project.
Declarations registered for the tag:
Algebra.FinitePresentation.ker_fg_of_mvPolynomialregistered withadd_to_stacksin StacksCore/RingTheory/FinitePresentation.lean, line 13 (StacksCore). References: EGA IV (1.4.4), “necessity”; SGA 3 V (9.1), “special case”; SGA 3 VIB (1.3.0).
Tag 0561, a lemma
Tag 0561 in the Stacks Project.
Module.FinitePresentation.of_restrictScalars_of_finiteType, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Flat/BlowupFiniteTypeReduction.lean, line 238. The attribute's comment: “the module statement, not the analogue for algebras”.
Stacks 0561. Let
R → Sbe a ring map of finite type and letMbe anS-module which is finitely presented as anR-module. ThenMis finitely presented as anS-module.Mathlib's
Module.FinitePresentation.transis the converse implication: it deduces finite presentation overRfrom finite presentation overStogether with finite presentation ofSoverR. Mathlib's own declaration carrying the tag0561,Algebra.FinitePresentation.of_restrict_scalars_finitePresentation, is not this lemma but the analogue for algebras in place of modules.
theorem Module.FinitePresentation.of_restrictScalars_of_finiteType (R S M : Type*) [CommRing R]
[CommRing S] [Algebra R S] [AddCommGroup M] [Module R M] [Module S M] [IsScalarTower R S M]
[Algebra.FiniteType R S] [Module.FinitePresentation R M] : Module.FinitePresentation S M
Sources
Section10.7 Finite ring maps#
Section 10.7 of the Stacks Project, Tag 0562. 3 tags here are carried by 1 declaration of the repository (in StacksCore) and 3 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00GJ, a lemma
Tag 00GJ in the Stacks Project.
Module.Finite.iff_scalarTower, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Finiteness/Basic.lean, line 15.
theorem Module.Finite.iff_scalarTower {R S M : Type*} [Semiring R] [Semiring S] [AddCommMonoid M]
[Module R S] [Module R M] [Module S M] [Module.Finite R S] [IsScalarTower R S M] :
Module.Finite R M ↔ Module.Finite S M
Tag 00GL, a lemma
Tag 00GL in the Stacks Project.
Declarations registered for the tag:
RingHom.Finite.compregistered withadd_to_stacksin StacksCore/RingTheory/Finiteness/Basic.lean, line 12 (StacksCore). References: EGA II (6.1.5), “(ii), special case”.
Tag 0D46, a lemma
Tag 0D46 in the Stacks Project.
Declarations registered for the tag:
Module.FinitePresentation.of_finite_of_finitePresentationregistered withadd_to_stacksin StacksCore/RingTheory/Finiteness/ModuleFinitePresentation.lean, line 10 (StacksCore). References: EGA IV (1.4.7), “necessity”.RingHom.FiniteType.of_finiteregistered withadd_to_stacksin StacksCore/RingTheory/FiniteType.lean, line 18 (StacksCore).
Sources
Section10.8 Colimits#
Section 10.8 of the Stacks Project, Tag 07N7. 10 tags here are carried by 6 declarations of the repository (2 in StacksCore and 4 in StacksFrontier) and 10 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00D4, a definition
Tag 00D4 in the Stacks Project.
Declarations registered for the tag:
DirectedSystemregistered withadd_to_stacksin StacksCore/Order/DirectedInverseSystem.lean, line 10 (StacksCore).
Tag 00D5, a lemma
Tag 00D5 in the Stacks Project.
Declarations registered for the tag:
Module.DirectLimitregistered withadd_to_stacksin StacksCore/Algebra/Colimit/Module.lean, line 9 (StacksCore). References: EGA 0 (6.2.3), “special case”.DirectLimit.Module.ofregistered withadd_to_stacksin StacksCore/Algebra/Colimit/Module.lean, line 10 (StacksCore).DirectLimit.Module.liftregistered withadd_to_stacksin StacksCore/Algebra/Colimit/Module.lean, line 11 (StacksCore).
Tag 00D6, a lemma
Tag 00D6 in the Stacks Project.
Declarations registered for the tag:
ModuleCat.directLimitIsColimitregistered withadd_to_stacksin StacksCore/Algebra/Category/ModuleCat/Limits.lean, line 8 (StacksCore).
Tag 00D7, a lemma
Tag 00D7 in the Stacks Project.
Declarations registered for the tag:
DirectLimit.exists_eq_zeroregistered withadd_to_stacksin StacksCore/Algebra/Colimit/Module.lean, line 12 (StacksCore).
Tag 00D8, an example
Tag 00D8 in the Stacks Project.
ModuleCat.ker_hom_comp_inl_and_ker_hom_inl_of_isPushout, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Ideal/AssociatedPrime/Colimits.lean, line 112. The attribute's comment: “The poset {a < b, a < c} is the span shape, so the colimit of a system over it is a pushout in ModuleCat R, taken here abstractly rather than through the model Coker(μ_ab ⊕ -μ_ac); that the pushout is that cokernel is Mathlib's CategoryTheory.IsPushout.isColimitCokernelCofork. The mirror Ker(inr) = μ_ac(Ker(μ_ab)) is this statement applied to h.flip.”.
Let
Rbe a ring and letM = colim M_ibe the colimit of a system ofR-modules over the poset{a < b, a < c}, that is, the pushout of a spanM_b ← M_a → M_cofR-modules, with canonical mapsinl : M_b → Mandinr : M_c → M. Then the kernel of the canonical mapM_a → MisKer(μ_ab) + Ker(μ_ac), and the kernel ofinlis the image ofKer(μ_ac)underμ_ab.
theorem ModuleCat.ker_hom_comp_inl_and_ker_hom_inl_of_isPushout {R : Type u} [Ring R]
{Ma Mb Mc M : ModuleCat.{v} R} {μab : Ma ⟶ Mb} {μac : Ma ⟶ Mc} {inl : Mb ⟶ M} {inr : Mc ⟶ M}
(h : IsPushout μab μac inl inr) :
LinearMap.ker (μab ≫ inl).hom = LinearMap.ker μab.hom ⊔ LinearMap.ker μac.hom ∧
LinearMap.ker inl.hom = Submodule.map μab.hom (LinearMap.ker μac.hom)
Tag 00D9, a definition
Tag 00D9 in the Stacks Project.
Module.IsSystemHom, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Ideal/AssociatedPrime/Defs/Colimits.lean, line 75. The attribute's comment: “Stated as a Prop-valued predicate on the family φ, in the unbundled language of Module.DirectLimit, so that Module.DirectLimit.map φ h is the induced map on colimits of Lemma 00DA. The axioms of a system (DirectedSystem) are not assumed, the commuting squares not referring to them, and R is only a semiring acting on additive commutative monoids.”.
Stacks 00D9. Let
(M i, μ i j)and(N i, ν i j)be systems ofR-modules over the same preordered setι. A family ofR-linear mapsφ i : M i →ₗ[R] N iis a homomorphism of systems from(M, μ)to(N, ν)when every transition square commutes, that is, whenφ j ∘ₗ μ i j = ν i j ∘ₗ φ ifor alli ≤ j; equivalently, whenφis a natural transformation between the associated diagramsι ⥤ ModuleCat R. The axioms makingμandνsystems are not needed to state the condition and are not assumed.
def IsSystemHom {R : Type*} [Semiring R] {ι : Type*} [Preorder ι]
{M : ι → Type*} [∀ i, AddCommMonoid (M i)] [∀ i, Module R (M i)]
(μ : (i j : ι) → i ≤ j → M i →ₗ[R] M j)
{N : ι → Type*} [∀ i, AddCommMonoid (N i)] [∀ i, Module R (N i)]
(ν : (i j : ι) → i ≤ j → N i →ₗ[R] N j)
(φ : (i : ι) → M i →ₗ[R] N i) : Prop
Declarations registered for the tag:
Module.DirectLimit.mapregistered withadd_to_stacksin StacksCore/Algebra/Colimit/Module.lean, line 13 (StacksCore).
Tag 00DA, a lemma
Tag 00DA in the Stacks Project.
Declarations registered for the tag:
Module.DirectLimit.mapregistered withadd_to_stacksin StacksCore/Algebra/Colimit/Module.lean, line 14 (StacksCore).
Tag 00DB, a lemma
Tag 00DB in the Stacks Project.
Module.DirectLimit.comp_eq_zero, a lemma in StacksCore (human-reviewed), declared in StacksCore/Algebra/Colimit/Module.lean, line 28. The attribute's comment: “part 1”.
public lemma Module.DirectLimit.comp_eq_zero :
Module.DirectLimit.map g' hg' ∘ₗ Module.DirectLimit.map g hg = 0
Module.DirectLimit.homologyColimitEquiv, a def in StacksCore (human-reviewed), declared in StacksCore/Algebra/Colimit/Module.lean, line 127. The attribute's comment: “part 2”.
Homology intertwines with direct limits.
public def Module.DirectLimit.homologyColimitEquiv
[Nonempty ι] [IsDirectedOrder ι]
[DirectedSystem M fun i j h ↦ ⇑(f' i j h)]
[DirectedSystem N fun x1 x2 x3 ↦ ⇑(l x1 x2 x3)] :
Module.DirectLimit (hObj g g') (hMap g hg g' hg') ≃ₗ[R] homologyLimit g hg g' hg'
Tag 00DC, an example
Tag 00DC in the Stacks Project.
ModuleCat.not_injective_hom_of_isColimit_binaryCofan_of_isPushout, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Ideal/AssociatedPrime/Colimits.lean, line 149. The attribute's comment: “The poset {a < b, a < c} is the span shape, so the colimit of a system over it is a pushout in ModuleCat R and the colimit of the sub-system with apex the zero module is the coproduct B ⊔ C; the morphism of systems (0 → A, 𝟙 B, 𝟙 C) is injective on each object, and ψ is pinned by the two commuting squares of Stacks 00DA. Stated for an arbitrary nonzero span over an arbitrary ring instead of the source's (0, ℤ, ℤ, 0, 0) → (ℤ, ℤ, ℤ, 1, 1).”.
Taking colimits is not exact in general: let
Rbe a ring, letMbe the colimit of a system(A, B, C, μ_ab, μ_ac)ofR-modules over the poset{a < b, a < c}, that is, the pushout of the spanB ← A → C, and letLbe the colimitB ⊔ Cof the sub-system(0, B, C, 0, 0). If one ofμ_ab,μ_acis nonzero, then the induced map of colimitsψ : L → Mis not injective, even though the morphism of systems(0 → A, 𝟙 B, 𝟙 C)is injective on each object.
theorem ModuleCat.not_injective_hom_of_isColimit_binaryCofan_of_isPushout {R : Type u}
[Ring R] {A B C L M : ModuleCat.{v} R} {μab : A ⟶ B} {μac : A ⟶ C} {l : B ⟶ L} {r : C ⟶ L}
{inl : B ⟶ M} {inr : C ⟶ M} {ψ : L ⟶ M} (hL : IsColimit (BinaryCofan.mk l r))
(hM : IsPushout μab μac inl inr) (hl : l ≫ ψ = inl) (hr : r ≫ ψ = inr)
(hμ : μab ≠ 0 ∨ μac ≠ 0) :
¬ Function.Injective ψ.hom
Tag 04B0, a lemma
Tag 04B0 in the Stacks Project.
CategoryTheory.hasExactColimitsOfShape_of_isPseudofiltered, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Ideal/AssociatedPrime/Colimits.lean, line 290. The attribute's comment: “Stated as HasExactColimitsOfShape J C, i.e. colim : (J ⥤ C) ⥤ C preserves finite limits, which for a left adjoint is exactness and is the form of Stacks 00DB the source asks for. The assumptions of Stacks 002X are spelled out because Mathlib has no predicate for a pseudofiltered category. Stated for an arbitrary abelian category with colimits of size w whose filtered colimits are exact, instead of the source's abelian groups, since the source's proof uses only that; AB4 is derived from AB5 rather than assumed.”.
Let
Jbe an index category satisfying the assumptions of Stacks 002X: every spany ← x → zis completed by some commutative square, and every pair of parallel morphismsa b : x ⟶ yis coequalized by somec : y ⟶ z. Then taking colimits of diagrams overJin an abelian category with exact filtered colimits is exact.
theorem CategoryTheory.hasExactColimitsOfShape_of_isPseudofiltered {C : Type u}
[Category.{v} C] [Abelian C] [Limits.HasColimitsOfSize.{w, w} C] [AB5OfSize.{w, w} C]
{J : Type w} [Category.{w} J]
(hspan : ∀ ⦃x y z : J⦄ (a : x ⟶ y) (b : x ⟶ z), ∃ (t : J) (c : y ⟶ t) (d : z ⟶ t),
a ≫ c = b ≫ d)
(hpar : ∀ ⦃x y : J⦄ (a b : x ⟶ y), ∃ (z : J) (c : y ⟶ z), a ≫ c = b ≫ c) :
HasExactColimitsOfShape J C
Declarations registered for the tag:
instPreservesHomologyFunctorAddCommGrpCatColimregistered withadd_to_stacksin StacksCore/Algebra/Category/Grp/AB.lean, line 8 (StacksCore). References: EGA 0 (11.2.4), “special case”; SGA 4 XVII (5.5.6.3), “A = ℤ”.instAB5AddCommGrpCatregistered withadd_to_stacksin StacksCore/Algebra/Category/Grp/AB.lean, line 9 (StacksCore). References: SGA 4 I (2.10), “special case”; SGA 6 II (3.1), “special case”.
Sources
Section10.9 Localization#
Section 10.9 of the Stacks Project, Tag 00CM. 16 tags here are carried by 6 declarations of the repository (all in StacksCore) and 16 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00CN, a definition
Tag 00CN in the Stacks Project.
Declarations registered for the tag:
Submonoidregistered withadd_to_stacksin StacksCore/Algebra/Group/Submonoid/Defs.lean, line 7 (StacksCore). References: EGA 0 (1.2.1).
Tag 00CO, a definition
Tag 00CO in the Stacks Project.
Declarations registered for the tag:
Localizationregistered withadd_to_stacksin StacksCore/GroupTheory/MonoidLocalization/Basic.lean, line 7 (StacksCore). References: EGA 0 (10.3.1.1); EGA 0 (1.2.2); SGA 7 XXI (5.0), “more general”.IsLocalizationregistered withadd_to_stacksin StacksCore/RingTheory/Localization/Defs.lean, line 7 (StacksCore). References: EGA I (1.3.1), “more general”.
Tag 00CP, a proposition
Tag 00CP in the Stacks Project.
Declarations registered for the tag:
IsLocalization.liftregistered withadd_to_stacksin StacksCore/RingTheory/Localization/Defs.lean, line 8 (StacksCore). References: EGA 0 (1.2.4); EGA 0 (7.6.6).
Tag 00CQ, a lemma
Tag 00CQ in the Stacks Project.
Declarations registered for the tag:
IsLocalization.subsingleton_iffregistered withadd_to_stacksin StacksCore/RingTheory/Localization/Defs.lean, line 9 (StacksCore). References: EGA 0 (7.6.4), “Discrete topology on A”.
Tag 07JY, a lemma
Tag 07JY in the Stacks Project.
ModuleCat.invertibleSMulEquivalentLocalizationModuleCat, a def in StacksCore (human-reviewed), declared in StacksCore/Algebra/Category/ModuleCat/Localization.lean, line 283.
Stacks 07JY. The category of
Localization S-modules is equivalent to the full subcategory ofR-modules on which everys ∈ Sacts invertibly. The functor isModuleCat.localizedModuleFunctorrestricted to the subcategory; the quasi-inverse is restriction of scalars alongalgebraMap R (Localization S).
noncomputable def invertibleSMulEquivalentLocalizationModuleCat [Small.{v, u} R] :
(invertibleSMul S).FullSubcategory ≌ ModuleCat.{v} (Localization S)
Tag 07JZ, a definition
Tag 07JZ in the Stacks Project.
Declarations registered for the tag:
LocalizedModuleregistered withadd_to_stacksin StacksCore/Algebra/Module/LocalizedModule/Basic.lean, line 7 (StacksCore). References: EGA 0 (1.2.2); EGA I (1.1.1), “more general”; EGA I (1.3.1), “more general”.
Tag 07K0, a lemma
Tag 07K0 in the Stacks Project.
Declarations registered for the tag:
IsLocalizedModule.lift_uniqueregistered withadd_to_stacksin StacksCore/Algebra/Module/LocalizedModule/Basic.lean, line 8 (StacksCore). References: EGA 0 (1.2.4), “uniqueness of v*”.
Tag 02C5, an example
Tag 02C5 in the Stacks Project.
Declarations registered for the tag:
Localization.Awayregistered withadd_to_stacksin StacksCore/GroupTheory/MonoidLocalization/Away.lean, line 7 (StacksCore): “2”. References: EGA 0 (1.2.3); EGA 0 (7.6.15), “special case”; EGA I (1.3.1); EGA IV (10.4.4).Localization.AtPrimeregistered withadd_to_stacksin StacksCore/RingTheory/Localization/AtPrime/Basic.lean, line 7 (StacksCore): “1”. References: EGA 0 (10.3.1.1); EGA 0 (10.3.1.4); EGA 0 (16.3.1); EGA 0 (1.2.3); EGA 0 (1.2.7); EGA 0 (19.8.3); EGA I (1.1.1); EGA III (4.4.7); EGA IV (5.6.11); EGA IV (7.2.4); EGA IV (1.3.10); SGA 1 III (1.4).FractionRingregistered withadd_to_stacksin StacksCore/RingTheory/Localization/FractionRing.lean, line 16 (StacksCore): “3”. References: EGA 0 (10.3.1.1); EGA 0 (1.2.2), “special case”; EGA 0 (21.8.8); EGA II (7.1.5); EGA IV (18.11.12).FractionRing.fieldregistered withadd_to_stacksin StacksCore/RingTheory/Localization/FractionRing.lean, line 17 (StacksCore): “4”.
Tag 00CR, a lemma
Tag 00CR in the Stacks Project.
LocalizedModule.equivAwayColimit, a def in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/LocalizedModule/Colimit.lean, line 208.
Stacks 00CR.
S⁻¹M = colim_{f ∈ S} M_f: the localization ofMatSis the directed colimit of the away-localizationsM_foverf ∈ Swith the divisibility preorder, with transition mapsM_f → M_gforf ∣ ginduced by the universal property.
noncomputable def equivAwayColimit : LocalizedModule S M ≃ₗ[R] AwayColimit S M
Tag 02C6, a proposition
Tag 02C6 in the Stacks Project.
Declarations registered for the tag:
IsLocalization.localization_localization_isLocalizationregistered withadd_to_stacksin StacksCore/RingTheory/Localization/LocalizationLocalization.lean, line 8 (StacksCore). References: EGA 0 (1.4.6), “special case”; EGA 0 (7.6.8), “partial”.
Tag 02C7, a proposition
Tag 02C7 in the Stacks Project.
LocalizedModule.equivLocalizedModuleLocalizedModule, a def in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/LocalizedModule/LocalizationLocalization.lean, line 67.
Stacks 02C7. Iterated localization of modules: for multiplicative subsets
S, S' ⊆ Rand anR-moduleM, the localization ofMat the multiplicative setSS' = S ⊔ S'is the localization atSof theR-moduleS'⁻¹M.
noncomputable def equivLocalizedModuleLocalizedModule :
LocalizedModule (S ⊔ S') M ≃ₗ[R] LocalizedModule S (LocalizedModule S' M)
Tag 00CS, a proposition
Tag 00CS in the Stacks Project.
Declarations registered for the tag:
LocalizedModule.map_exactregistered withadd_to_stacksin StacksCore/Algebra/Module/LocalizedModule/Exact.lean, line 7 (StacksCore). References: EGA 0 (1.3.2), “more general”; EGA 0 (6.3.1), “more general”.
Tag 02C8, a lemma
Tag 02C8 in the Stacks Project.
Declarations registered for the tag:
localizedQuotientEquivregistered withadd_to_stacksin StacksCore/Algebra/Module/LocalizedModule/Submodule.lean, line 7 (StacksCore).
Tag 00CT, a proposition
Tag 00CT in the Stacks Project.
IsLocalization.quotientEquiv, a def in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Localization/Ideal.lean, line 30. The attribute's comment: “(2)”.
Localization commutes with quotients: for any localization
QofA/Iat the imageS̄ofS, there is a canonical algebra (in particular ring) isomorphismS̄⁻¹(A/I) ≅ S⁻¹A/S⁻¹I.
noncomputable def quotientEquiv : Q ≃ₐ[A ⧸ I] A_S ⧸ I.map (algebraMap A A_S)
Declarations registered for the tag:
Ideal.localized'_eq_mapregistered withadd_to_stacksin StacksCore/RingTheory/Localization/Ideal.lean, line 12 (StacksCore): “(1)”. References: EGA 0 (1.2.6), “partial”.
Tag 00CU, a lemma
Tag 00CU in the Stacks Project.
Submodule.localized'_comap_restrictScalars, a theorem in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/LocalizedModule/Submodule.lean, line 19. References: SGA 6 0 (2.11), “affine step”.
theorem localized'_comap_restrictScalars (N' : Submodule S N) :
((N'.restrictScalars R).comap f).localized' S p f = N'
Submodule.localized'_surjective, a theorem in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/LocalizedModule/Submodule.lean, line 24. The attribute's comment: “existence form”.
theorem localized'_surjective : Function.Surjective (localized' S p f)
Tag 02C9, a lemma
Tag 02C9 in the Stacks Project.
Declarations registered for the tag:
IsLocalization.map_underregistered withadd_to_stacksin StacksCore/RingTheory/Localization/Ideal.lean, line 13 (StacksCore). References: EGA 0 (1.2.6), “partial”.
Sources
Section10.10 Internal Hom#
Section 10.10 of the Stacks Project, Tag 0581. 2 tags here are carried by 2 declarations of the repository (all in StacksCore) and 3 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0582, a lemma
Tag 0582 in the Stacks Project.
LinearMap.exact_iff_homLeft, a theorem in StacksCore (human-reviewed), declared in StacksCore/Algebra/Exact.lean, line 59. The attribute's comment: “part 2”.
theorem exact_iff_homLeft : (Function.Injective f ∧ Function.Exact f g) ↔
∀ (N : Type v) [AddCommGroup N] [Module R N],
Function.Injective (compRight (M := N) ℕ f) ∧
Function.Exact (compRight (M := N) ℕ f) (compRight (M := N) ℕ g)
LinearMap.exact_iff_homRight, a theorem in StacksCore (human-reviewed), declared in StacksCore/Algebra/Exact.lean, line 81. The attribute's comment: “part 1”.
theorem exact_iff_homRight : (Function.Exact f g ∧ Function.Surjective g) ↔ ∀ (N : Type v)
[AddCommGroup N] [Module R N], Function.Injective (lcomp ℕ N g) ∧
Function.Exact (lcomp ℕ N g) (lcomp ℕ N f)
Tag 0583, a lemma
Tag 0583 in the Stacks Project.
Declarations registered for the tag:
instIsLocalizedModuleLinearMapIdLocalizationLocalizedModuleMapOfFinitePresentationregistered withadd_to_stacksin StacksCore/Algebra/Module/FinitePresentation.lean, line 11 (StacksCore): “part 1”. References: EGA 0 (1.3.5); EGA 0 (1.5.3), “special case”; EGA 0 (1.5.5), “special case”.Module.FinitePresentation.isLocalizedModule_mapExtendScalarsregistered withadd_to_stacksin StacksCore/Algebra/Module/FinitePresentation.lean, line 13 (StacksCore): “part 1”. References: EGA 0 (1.3.5), “more general”.Module.FinitePresentation.isLocalizedModule_mapregistered withadd_to_stacksin StacksCore/Algebra/Module/FinitePresentation.lean, line 14 (StacksCore): “part 2”. References: EGA 0 (1.3.5), “more general”.
Sources
Section10.11 Characterizing finite and finitely presented modules#
Section 10.11 of the Stacks Project, Tag 0G8M. 4 tags here are carried by 5 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0G8N, a lemma
Tag 0G8N in the Stacks Project.
Stacks.Module.FinitenessViaHomColimit.finite_iff_comparisonMap_injective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Module/Finiteness/HomColimit.lean, line 362. References: EGA IV (8.5.2.1), “Forward implication”.
Stacks Tag 0G8N. An
R-moduleNis finite (finitely generated) if and only if for every filtered colimitM = colim_i M_iofR-modules the canonical comparison mapΘ_N : colim_i Hom_R(N, M_i) → Hom_R(N, M)is injective.
theorem finite_iff_comparisonMap_injective (N : ModuleCat.{w} R) :
Module.Finite R N ↔ InjectiveForAllFilteredColimits R N
Tag 07N8, a definition
Tag 07N8 in the Stacks Project.
Module.IsRelation, a def in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Module/FinitePresentation/Colimit.lean, line 215.
IsRelation f xsays that the coefficientsfgive a relation among the elementsxof anR-module, i.e.∑ i, f i • x i = 0.
def IsRelation {R : Type*} [Semiring R] {M : Type*} [AddCommMonoid M] [Module R M]
{ι : Type*} [Fintype ι] (f : ι → R) (x : ι → M) : Prop
Tag 00HA, a lemma
Tag 00HA in the Stacks Project.
Module.exists_linearEquiv_directLimit_finitePresentation, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Module/FinitePresentation/Colimit.lean, line 162.
Every
R-moduleMis the colimit of a directed system of finitely presentedR-modules in the universe ofM, providedRis small in that universe.
theorem Module.exists_linearEquiv_directLimit_finitePresentation
(R : Type u) [Ring R] [Small.{v} R] (M : Type v) [AddCommGroup M] [Module R M] :
∃ (ι : Type v) (_ : Preorder ι) (_ : IsDirectedOrder ι) (_ : Nonempty ι)
(_ : DecidableEq ι)
(G : ι → Type v) (_ : (i : ι) → AddCommGroup (G i))
(_ : (i : ι) → Module R (G i))
(f : (i j : ι) → i ≤ j → (G i →ₗ[R] G j))
(_ : DirectedSystem G (fun i j h => f i j h)),
-- each module in the system is finitely presented
(∀ i, Module.FinitePresentation R (G i)) ∧
-- and M is isomorphic to the colimit of the system
Nonempty (M ≃ₗ[R] Module.DirectLimit G f)
Module.exists_linearEquiv_directLimit_finitePresentation_max, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Module/FinitePresentation/Colimit.lean, line 195. The attribute's comment: “no smallness assumption on the ring”.
Every module is a directed colimit of finitely presented modules in the maximum of the universes of the ring and the module.
theorem Module.exists_linearEquiv_directLimit_finitePresentation_max
(R : Type u) [Ring R] (M : Type v) [AddCommGroup M] [Module R M] :
∃ (ι : Type (max u v)) (_ : Preorder ι) (_ : IsDirectedOrder ι) (_ : Nonempty ι)
(_ : DecidableEq ι)
(G : ι → Type (max u v)) (_ : (i : ι) → AddCommGroup (G i))
(_ : (i : ι) → Module R (G i))
(f : (i j : ι) → i ≤ j → (G i →ₗ[R] G j))
(_ : DirectedSystem G (fun i j h => f i j h)),
(∀ i, Module.FinitePresentation R (G i)) ∧
Nonempty (M ≃ₗ[R] Module.DirectLimit G f)
Tag 0G8P, a lemma
Tag 0G8P in the Stacks Project.
finitePresentation_iff_comparisonMap_bijective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Module/Finiteness/HomColimit.lean, line 692. References: EGA IV (8.5.2), “(i), special case”; EGA IV (8.5.2.1), “more general”; SGA 3 VIIB (0.3.5), “(3), special case”.
Stacks Tag 0G8P. An
R-moduleNis finitely presented if and only if for every directed (filtered) system ofR-modules the canonical comparison mapΦ : colim_i Hom_R(N, M_i) → Hom_R(N, colim_i M_i)is bijective.We quantify over index types
ιand module familiesGin the universeuofRandN. The forward direction holds for directed systems in any universe. The converse uses the system of finitely generated submodules ofN, which lives in the universe ofN, and the system of quotients(Fin n →₀ R) ⧸ S Q, which lives in the universe ofR.
theorem finitePresentation_iff_comparisonMap_bijective
(R : Type u) [CommRing R] (N : Type u) [AddCommGroup N] [Module R N] :
Module.FinitePresentation R N ↔
∀ {ι : Type u} [Preorder ι] [DecidableEq ι] [IsDirectedOrder ι] [Nonempty ι]
(G : ι → Type u) [(i : ι) → AddCommGroup (G i)] [(i : ι) → Module R (G i)]
(f : (i j : ι) → i ≤ j → G i →ₗ[R] G j)
[DirectedSystem G (fun i j h => f i j h)],
Function.Bijective (homColimComparison (R := R) (N := N) (ι := ι) G f)
Sources
Section10.12 Tensor products#
Section 10.12 of the Stacks Project, Tag 00CV. 16 tags here are carried by 5 declarations of the repository (3 in StacksCore and 2 in StacksFrontier) and 25 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00CW, a definition
Tag 00CW in the Stacks Project.
Declarations registered for the tag:
LinearMap.mk₂registered withadd_to_stacksin StacksCore/LinearAlgebra/BilinearMap.lean, line 8 (StacksCore).
Tag 00CX, a lemma
Tag 00CX in the Stacks Project.
Declarations registered for the tag:
TensorProduct.liftregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Basic.lean, line 8 (StacksCore). References: EGA III (7.2.1), “special case”; SGA 3 VIIB (0.3.5).TensorProduct.lift.uniqueregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Basic.lean, line 9 (StacksCore).
Tag 00CY, a lemma
Tag 00CY in the Stacks Project.
Declarations registered for the tag:
TensorProduct.directSumLeftregistered withadd_to_stacksin StacksCore/LinearAlgebra/DirectSum/TensorProduct.lean, line 8 (StacksCore). References: EGA III (7.2.6), “special case”; SGA 3 I (4.7.3), “special case”.TensorProduct.lidregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Associator.lean, line 8 (StacksCore). References: SGA 3 VIIB (0.3.2), “special case”.TensorProduct.commregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Basic.lean, line 10 (StacksCore).TensorProduct.commregistered withadd_to_stacksin StacksFrontier/LinearAlgebra/TensorProduct/CanonicalIsos.lean, line 25 (StacksFrontier): “the first isomorphism”.TensorProduct.comm_tmulregistered withadd_to_stacksin StacksFrontier/LinearAlgebra/TensorProduct/CanonicalIsos.lean, line 26 (StacksFrontier): “the first isomorphism, on pure tensors”.TensorProduct.prodLeftregistered withadd_to_stacksin StacksFrontier/LinearAlgebra/TensorProduct/CanonicalIsos.lean, line 27 (StacksFrontier): “the second isomorphism”. References: EGA III (7.2.6), “special case”.TensorProduct.prodLeft_tmulregistered withadd_to_stacksin StacksFrontier/LinearAlgebra/TensorProduct/CanonicalIsos.lean, line 29 (StacksFrontier): “the second isomorphism, on pure tensors”.TensorProduct.lidregistered withadd_to_stacksin StacksFrontier/LinearAlgebra/TensorProduct/CanonicalIsos.lean, line 30 (StacksFrontier): “the third isomorphism”. References: SGA 3 VIIB (0.3.2), “special case”.TensorProduct.lid_tmulregistered withadd_to_stacksin StacksFrontier/LinearAlgebra/TensorProduct/CanonicalIsos.lean, line 31 (StacksFrontier): “the third isomorphism, on pure tensors”.TensorProduct.ext'registered withadd_to_stacksin StacksFrontier/LinearAlgebra/TensorProduct/CanonicalIsos.lean, line 32 (StacksFrontier): “uniqueness of each of the three”.
Tag 00CZ, a lemma
Tag 00CZ in the Stacks Project.
Declarations registered for the tag:
PiTensorProduct.liftregistered withadd_to_stacksin StacksCore/LinearAlgebra/PiTensorProduct/Basic.lean, line 8 (StacksCore).PiTensorProduct.lift.uniqueregistered withadd_to_stacksin StacksCore/LinearAlgebra/PiTensorProduct/Basic.lean, line 9 (StacksCore).
Tag 00D0, a lemma
Tag 00D0 in the Stacks Project.
Declarations registered for the tag:
TensorProduct.assocregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Associator.lean, line 9 (StacksCore).
Tag 00D1, a definition
Tag 00D1 in the Stacks Project.
DistribMulAction.commute_toAddMonoidEnd, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/Algebra/Module/Bimodule.lean, line 95. The attribute's comment: “The source's condition, that multiplication by a and multiplication by b commute, at the level of the multiplication operators: an equation in AddMonoid.End N. The condition as a class on the two actions is SMulCommClass, tagged below.”.
Stacks 00D1. In an
(A, B)-bimodule multiplication bya : Aand multiplication byb : Bcommute, as additive endomorphisms ofN: this is the source's own phrasing of the bimodule condition, an equation inAddMonoid.End N.The condition itself is
SMulCommClass A B N, whose fieldsmul_commis the pointwise identitya • b • n = b • a • n; commuting of the operators is the form consumed byAlgebra.TensorProduct.liftEquiv, hence byTensorProduct.Algebra.module.
public theorem DistribMulAction.commute_toAddMonoidEnd {A B N : Type*} [Monoid A] [Monoid B]
[AddMonoid N] [DistribMulAction A N] [DistribMulAction B N] [SMulCommClass A B N] (a : A)
(b : B) :
Commute (DistribMulAction.toAddMonoidEnd A N a) (DistribMulAction.toAddMonoidEnd B N b)
Declarations registered for the tag:
SMulCommClassregistered withadd_to_stacksin StacksFrontier/Algebra/Module/Bimodule.lean, line 104 (StacksFrontier): “An(A, B)-bimodule is a type with[Module A N] [Module B N] [SMulCommClass A B N]: the source's data is the two module structures, and its one condition, that the actions commute, is this class,smul_commbeinga • b • n = b • a • n, the source'sb (a n) = a (b n)read from the other side. The class asks only for twoSMuls, so this covers semirings acting on an additive commutative monoid as well as the source's rings acting on an abelian group. Writing theB-action on the right is the source's notation, not a further condition; the genuine right-action form is this class atBᵐᵒᵖ, the bimodule set-up ofMathlib/Algebra/Module/Bimodule.lean.”.
Tag 00D2, a lemma
Tag 00D2 in the Stacks Project.
Declarations registered for the tag:
TensorProduct.AlgebraTensorModule.assocregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Tower.lean, line 11 (StacksCore).
Tag 00DE, a lemma
Tag 00DE in the Stacks Project.
Declarations registered for the tag:
TensorProduct.lift.equivregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Associator.lean, line 10 (StacksCore).
Tag 00DD, a lemma
Tag 00DD in the Stacks Project.
Declarations registered for the tag:
TensorProduct.directLimitLeftregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/DirectLimit.lean, line 8 (StacksCore). References: EGA 0 (4.3.2), “special case”; EGA III (6.5.6), “special case”; SGA 4 V (8.2.4), “special case”; SGA 5 V (1.2.1), “special case”.
Tag 00DF, a lemma
Tag 00DF in the Stacks Project.
Declarations registered for the tag:
rTensor_exactregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/RightExactness.lean, line 8 (StacksCore). References: EGA 0 (4.1.5), “special case”; EGA III (7.2.6), “partial”; SGA 3 VIIB (0.3.2), “Corollary, special case”.LinearMap.rTensor_surjectiveregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/RightExactness.lean, line 9 (StacksCore).
Tag 00DH, a remark
Tag 00DH in the Stacks Project.
tensorRight_not_preserve_exactness, a theorem in StacksCore (human-reviewed), declared in StacksCore/Counterexamples/TensorProduct.lean, line 25.
theorem tensorRight_not_preserve_exactness :
¬ ∀ (R : Type u) (_ : CommRing R) (M₁ : Type v)
(M₂ M₃ : Type v') (N : Type w)
(_ : AddCommGroup M₁) (_ : Module R M₁)
(_ : AddCommGroup M₂) (_ : Module R M₂)
(_ : AddCommGroup M₃) (_ : Module R M₃)
(_ : AddCommGroup N) (_ : Module R N)
(f : M₁ →ₗ[R] M₂) (g : M₂ →ₗ[R] M₃),
Function.Exact f g →
Function.Exact (f.rTensor N) (g.rTensor N)
Tag 00DI, an example
Tag 00DI in the Stacks Project.
TensorProduct.not_injective_rTensor_zmod_two_lsmul_two, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/TensorProduct/NotLeftExact.lean, line 84.
Stacks 00DI. Multiplication by
2is an injective map ofℤ-modulesℤ → ℤ, but the induced mapℤ ⊗[ℤ] ℤ/2 → ℤ ⊗[ℤ] ℤ/2is the zero map and hence not injective,ℤ ⊗[ℤ] ℤ/2being nonzero. So tensoring does not preserve injectivity.
public theorem TensorProduct.not_injective_rTensor_zmod_two_lsmul_two :
Function.Injective (LinearMap.lsmul ℤ ℤ (2 : ℤ)) ∧
(LinearMap.lsmul ℤ ℤ (2 : ℤ)).rTensor (ZMod 2) = 0 ∧
¬ Function.Injective ((LinearMap.lsmul ℤ ℤ (2 : ℤ)).rTensor (ZMod 2))
Tag 00DJ, a remark
Tag 00DJ in the Stacks Project.
Declarations registered for the tag:
Module.Flatregistered withadd_to_stacksin StacksCore/RingTheory/Flat/Basic.lean, line 8 (StacksCore). References: EGA 0 (10.3.1.2); EGA 0 (10.3.1.3); EGA 0 (6.1.1); EGA IV (6.1.3); EGA IV (2.1.12); SGA 1 IV (4.3); SGA 3 VIIB (2.2.1), “special case”; SGA 4 V (1.1), “special case”; SGA 4 XVII (5.5.6.3); SGA 4½ Etat 0 (6.2), “special case”; SGA 5 IIIB (5.10); SGA 5 IIIB (6.1), “partial”; SGA 6 X (7.18.1).
Tag 05BS, a lemma
Tag 05BS in the Stacks Project.
Module.FinitePresentation.tensorProduct, an instance in StacksCore (human-reviewed), declared in StacksCore/RingTheory/TensorProduct/Finite.lean, line 38. The attribute's comment: “part 2”.
Stacks 05BS (2). The tensor product of two finitely presented modules is finitely presented.
instance Module.FinitePresentation.tensorProduct
[Module.FinitePresentation R M] [Module.FinitePresentation R N] :
Module.FinitePresentation R (M ⊗[R] N)
Declarations registered for the tag:
Module.Finite.tensorProductregistered withadd_to_stacksin StacksCore/RingTheory/TensorProduct/Finite.lean, line 31 (StacksCore): “part 1”. References: EGA 0 (5.2.1), “special case”.
Tag 00DK, a lemma
Tag 00DK in the Stacks Project.
Declarations registered for the tag:
LocalizedModule.equivTensorProductregistered withadd_to_stacksin StacksCore/RingTheory/Localization/BaseChange.lean, line 24 (StacksCore). References: EGA 0 (1.2.5); EGA 0 (1.5.4), “partial”; EGA 0 (6.3.1); EGA 0 (6.3.3), “partial”.
Tag 00DL, a lemma
Tag 00DL in the Stacks Project.
IsLocalization.tensorLocalizeEquivTensor, a def in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Localization/BaseChange.lean, line 62. References: EGA 0 (1.3.4), “more general”.
Stacks 00DL. Localization commutes with tensor product: for any localization
PofM ⊗[R] NatS, there is a canonicalRₛ-linear isomorphismM' ⊗[Rₛ] N' ≃ P. TakingRₛ = S⁻¹R,M' = S⁻¹M,N' = S⁻¹NandP = S⁻¹(M ⊗_R N)gives the isomorphismS⁻¹M ⊗_{S⁻¹R} S⁻¹N ≅ S⁻¹(M ⊗_R N)of the Stacks project.
noncomputable def IsLocalization.tensorLocalizeEquivTensor
[IsLocalizedModule S f] [IsLocalizedModule S g] [IsLocalizedModule S h] :
M' ⊗[Rₛ] N' ≃ₗ[Rₛ] P
Sources
Section10.13 Tensor algebra#
Section 10.13 of the Stacks Project, Tag 00DM. 6 tags here are carried by 12 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00DN, a lemma
Tag 00DN in the Stacks Project.
exteriorPower_free, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/SymmetricPower/Free.lean, line 37. References: EGA 0 (5.5.4), “free case”; SGA 6 X (6.1), “special case”.
If
Mis a freeR-module, then for everyn ≥ 0then-th exterior power⋀^n(M)is a freeR-module.
theorem exteriorPower_free
(R : Type*) [CommRing R] (M : Type*) [AddCommGroup M] [Module R M]
[Module.Free R M] (n : ℕ) :
Module.Free R (ExteriorAlgebra.exteriorPower R n M)
symmetricPower_free, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/SymmetricPower/Free.lean, line 299.
If
Mis a freeR-module, then for everyn ≥ 0then-th symmetric powerSym^n(M)is a freeR-module.
theorem symmetricPower_free
(R : Type) [CommSemiring R] (M : Type*) [AddCommMonoid M] [Module R M]
[Module.Free R M] (n : ℕ) :
Module.Free R (SymmetricPower R (Fin n) M)
Tag 00DO, a lemma
Tag 00DO in the Stacks Project.
symmetric_and_exterior_power_presentation, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/SymmetricPower/Presentation.lean, line 992.
Let
Rbe a commutative ring and letM₂ --g--> M₁ --f--> M → 0be an exact sequence ofR-modules (fsurjective andrange g = ker f). Withn = k + 1 ≥ 1, both presentation sequences are exact:
- symmetric:
M₂ ⊗ Sym^k(M₁) --α--> Sym^{k+1}(M₁) --Sym^{k+1}(f)--> Sym^{k+1}(M) → 0;- exterior:
M₂ ⊗ ∧^k(M₁) --β--> ∧^{k+1}(M₁) --∧^{k+1}(f)--> ∧^{k+1}(M) → 0.In each case the right-hand map is surjective and the image of the left-hand connecting map equals the kernel of the right-hand map.
theorem symmetric_and_exterior_power_presentation
{R : Type*} [CommRing R]
{M M₁ M₂ : Type*}
[AddCommGroup M] [Module R M] [AddCommGroup M₁] [Module R M₁]
[AddCommGroup M₂] [Module R M₂]
(g : M₂ →ₗ[R] M₁) (f : M₁ →ₗ[R] M)
(hf : Function.Surjective f) (hexact : LinearMap.range g = LinearMap.ker f)
(k : ℕ) :
(Function.Surjective (symMap (k + 1) f) ∧
LinearMap.range (symMulMap k g) = LinearMap.ker (symMap (k + 1) f)) ∧
(Function.Surjective (exteriorPower.map (k + 1) f) ∧
LinearMap.range (beta k g) = LinearMap.ker (exteriorPower.map (k + 1) f))
Tag 00DP, a lemma
Tag 00DP in the Stacks Project.
exists_presentation_exteriorPower_and_symmetricPower, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/SymmetricPower/QuotientOfTensorPower.lean, line 300.
Stacks Tag 00DP. Let
Mbe a module over a commutative ringRwith a generating systemx : I → M, and letn + 2 ≥ 2. There are canonical exact sequences
(⊕ relators) → Tⁿ⁺²(M) → ⋀ⁿ⁺²(M) → 0and(⊕ relators) → Tⁿ⁺²(M) → Symⁿ⁺²(M) → 0,with the relator maps and projections determined by their values on pure tensors as described in the module docstring.
theorem exists_presentation_exteriorPower_and_symmetricPower {I : Type*} [DecidableEq I] (x : I → M)
(hx : Submodule.span R (Set.range x) = ⊤) (n : ℕ) :
-- exterior power presentation
(∃ (Φ : DirectSum ((SlotPair n × I × I) ⊕ (SlotPair n × I)) (fun _ => ⨂[R]^n M)
→ₗ[R] ⨂[R]^(n + 2) M)
(π : ⨂[R]^(n + 2) M →ₗ[R] ⋀[R]^(n + 2) M),
(∀ (jp : SlotPair n) (i₁ i₂ : I) (f : Fin n → M),
Φ (DirectSum.lof R _ _ (Sum.inl (jp, i₁, i₂)) (⨂ₜ[R] k, f k))
= (⨂ₜ[R] k, insTwo jp.1.1 jp.1.2 jp.2 (x i₁) (x i₂) f k)
+ (⨂ₜ[R] k, insTwo jp.1.1 jp.1.2 jp.2 (x i₂) (x i₁) f k)) ∧
(∀ (jp : SlotPair n) (i : I) (f : Fin n → M),
Φ (DirectSum.lof R _ _ (Sum.inr (jp, i)) (⨂ₜ[R] k, f k))
= (⨂ₜ[R] k, insTwo jp.1.1 jp.1.2 jp.2 (x i) (x i) f k)) ∧
(∀ f : Fin (n + 2) → M, π (⨂ₜ[R] k, f k) = exteriorPower.ιMulti R (n + 2) f) ∧
Function.Exact Φ π ∧ Function.Surjective π) ∧
-- symmetric power presentation
(∃ (Ψ : DirectSum (SlotPair n × I × I) (fun _ => ⨂[R]^n M) →ₗ[R] ⨂[R]^(n + 2) M)
(ρ : ⨂[R]^(n + 2) M →ₗ[R] Sym[R]^(n + 2) M),
(∀ (jp : SlotPair n) (i₁ i₂ : I) (f : Fin n → M),
Ψ (DirectSum.lof R _ _ (jp, i₁, i₂) (⨂ₜ[R] k, f k))
= (⨂ₜ[R] k, insTwo jp.1.1 jp.1.2 jp.2 (x i₁) (x i₂) f k)
- (⨂ₜ[R] k, insTwo jp.1.1 jp.1.2 jp.2 (x i₂) (x i₁) f k)) ∧
(∀ f : Fin (n + 2) → M, ρ (⨂ₜ[R] k, f k) = ⨂ₛ[R] k, f k) ∧
Function.Exact Ψ ρ ∧ Function.Surjective ρ)
Tag 0H1C, a lemma
Tag 0H1C in the Stacks Project.
exteriorPower.ker_eq_span_of_tprod_eq_ιMulti, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/ExteriorPower/Presentation.lean, line 360. The attribute's comment: “first family mᵢ = b • mⱼ, not mᵢ = mⱼ: the latter fails for n = 2”.
Stacks 0H1C. Let
A → Bbe a ring map, letMbe aB-module and letn ≥ 1. The kernel of the canonicalA-linear mapM ⊗_A ⋯ ⊗_A M → ⋀[B]^n M,m₁ ⊗ ⋯ ⊗ mₙ ↦ m₁ ∧ ⋯ ∧ mₙ, is generated as anA-module by the pure tensorsm₁ ⊗ ⋯ ⊗ mₙwithmᵢ = b • mⱼfor somei ≠ jandb ∈ B, together with the differencesm₁ ⊗ ⋯ ⊗ b mᵢ ⊗ ⋯ ⊗ mₙ - m₁ ⊗ ⋯ ⊗ b mⱼ ⊗ ⋯ ⊗ mₙfori ≠ jandb ∈ B.
theorem exteriorPower.ker_eq_span_of_tprod_eq_ιMulti
{A B M : Type*} [CommRing A] [CommRing B] [Algebra A B] [AddCommGroup M]
[Module A M] [Module B M] [IsScalarTower A B M] {n : ℕ} (hn : 0 < n)
(φ : (⨂[A]^n M) →ₗ[A] ⋀[B]^n M)
(hφ : ∀ m : Fin n → M, φ (PiTensorProduct.tprod A m) = exteriorPower.ιMulti B n m) :
LinearMap.ker φ =
Submodule.span A
({x | ∃ (m : Fin n → M) (i j : Fin n) (b : B), i ≠ j ∧ m i = b • m j ∧
PiTensorProduct.tprod A m = x} ∪
{x | ∃ (m : Fin n → M) (i j : Fin n) (b : B), i ≠ j ∧
PiTensorProduct.tprod A (Function.update m i (b • m i)) -
PiTensorProduct.tprod A (Function.update m j (b • m j)) = x})
exteriorPower.ker_eq_span_of_tprod_eq_ιMulti_of_two_lt, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/ExteriorPower/Presentation.lean, line 379. The attribute's comment: “the stated form, for n ≥ 3”.
For
2 < nthe tensors with two equal entries, together with the scaling differences, already generate the kernel.
theorem exteriorPower.ker_eq_span_of_tprod_eq_ιMulti_of_two_lt
{A B M : Type*} [CommRing A] [CommRing B] [Algebra A B] [AddCommGroup M]
[Module A M] [Module B M] [IsScalarTower A B M] {n : ℕ} (hn : 2 < n)
(φ : (⨂[A]^n M) →ₗ[A] ⋀[B]^n M)
(hφ : ∀ m : Fin n → M, φ (tprod A m) = exteriorPower.ιMulti B n m) :
LinearMap.ker φ =
Submodule.span A
({x | ∃ (m : Fin n → M) (i j : Fin n), i ≠ j ∧ m i = m j ∧ tprod A m = x} ∪
{x | ∃ (m : Fin n → M) (i j : Fin n) (b : B), i ≠ j ∧
tprod A (update m i (b • m i)) - tprod A (update m j (b • m j)) = x})
Tag 00DQ, a lemma
Tag 00DQ in the Stacks Project.
TensorAlgebra.ofDirectLimit_bijective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/TensorAlgebra/Colimit.lean, line 168. The attribute's comment: “tensor”.
Forming the tensor algebra commutes with directed colimits: the canonical algebra map
colim T(M_i) → T(colim M_i)is a bijection.
theorem TensorAlgebra.ofDirectLimit_bijective :
Function.Bijective (TensorAlgebra.ofDirectLimit f)
SymmetricAlgebra.ofDirectLimit_bijective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/TensorAlgebra/Colimit.lean, line 315. The attribute's comment: “symmetric”.
Forming the symmetric algebra commutes with directed colimits: the canonical algebra map
colim Sym(M_i) → Sym(colim M_i)is a bijection.
theorem SymmetricAlgebra.ofDirectLimit_bijective :
Function.Bijective (SymmetricAlgebra.ofDirectLimit f)
ExteriorAlgebra.ofDirectLimit_bijective, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/TensorAlgebra/Colimit.lean, line 433. The attribute's comment: “exterior”.
Forming the exterior algebra commutes with directed colimits: the canonical algebra map
colim ⋀(M_i) → ⋀(colim M_i)is a bijection.
theorem ExteriorAlgebra.ofDirectLimit_bijective :
Function.Bijective (ExteriorAlgebra.ofDirectLimit f)
Tag 0C6F, a lemma
Tag 0C6F in the Stacks Project.
TensorAlgebra.exists_algEquiv_baseChange, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/TensorAlgebra/Localization.lean, line 32. The attribute's comment: “(1)”.
The tensor algebra of a base change is isomorphic to the base change of the tensor algebra, sending
ι (1 ⊗ₜ m)to1 ⊗ₜ ι m. TakingA = S⁻¹Rgives compatibility with localization.
theorem TensorAlgebra.exists_algEquiv_baseChange :
∃ e : TensorAlgebra A (A ⊗[R] M) ≃ₐ[A] A ⊗[R] TensorAlgebra R M,
∀ m : M, e (ι A (1 ⊗ₜ[R] m)) = 1 ⊗ₜ[R] ι R m
SymmetricAlgebra.exists_algEquiv_baseChange, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/TensorAlgebra/Localization.lean, line 43. The attribute's comment: “(2)”.
The symmetric algebra of a base change is isomorphic to the base change of the symmetric algebra, sending
ι (1 ⊗ₜ m)to1 ⊗ₜ ι m. TakingA = S⁻¹Rgives compatibility with localization.
theorem SymmetricAlgebra.exists_algEquiv_baseChange :
∃ e : SymmetricAlgebra A (A ⊗[R] M) ≃ₐ[A] A ⊗[R] SymmetricAlgebra R M,
∀ m : M, e (ι A (A ⊗[R] M) (1 ⊗ₜ[R] m)) = 1 ⊗ₜ[R] ι R M m
ExteriorAlgebra.exists_algEquiv_baseChange, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/TensorAlgebra/Localization.lean, line 89. The attribute's comment: “(3)”.
The exterior algebra of a base change is isomorphic to the base change of the exterior algebra, sending
ι (1 ⊗ₜ m)to1 ⊗ₜ ι m. TakingA = S⁻¹Rgives compatibility with localization.
theorem ExteriorAlgebra.exists_algEquiv_baseChange :
∃ e : ExteriorAlgebra A (A ⊗[R] M) ≃ₐ[A] A ⊗[R] ExteriorAlgebra R M,
∀ m : M, e (ι A (1 ⊗ₜ[R] m)) = 1 ⊗ₜ[R] ι R m
Sources
Section10.14 Base change#
Section 10.14 of the Stacks Project, Tag 05G3. 5 tags here are carried by 3 declarations of the repository (all in StacksCore) and 13 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 05G4, a definition
Tag 05G4 in the Stacks Project.
Declarations registered for the tag:
TensorProductregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Basic.lean, line 11 (StacksCore). References: EGA 0 (21.1.4), “partial”; EGA III (7.2.6); EGA IV (2.5.8), “partial”; EGA IV (18.3.2.1); SGA 2 III (2.11); SGA 2 IV (4.6); SGA 3 VIIB (2.3.2), “partial”; SGA 4 IV (12.7), “special case”; SGA 4 XVII (4.1.6), “special case”; SGA 4½ Cycle (1.3), “Clause a)”; SGA 4½ Fonctions L (3.8); SGA 5 V (1.2), “special case”; SGA 6 IV (2.6), “special case”; SGA 6 VII (4.6), “more general”; SGA 7 IX (4.7.3).LinearMap.baseChangeregistered withadd_to_stacksin StacksCore/LinearAlgebra/TensorProduct/Tower.lean, line 12 (StacksCore). References: EGA II (6.4.1); EGA II (6.4.2); EGA II (6.4.7); SGA 1 IV (2.6); SGA 4½ Fonctions L (3.8).
Tag 05G5, a lemma
Tag 05G5 in the Stacks Project.
Module.Finite.tensorBaseChange, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/FiniteStability.lean, line 156. The attribute's comment: “(1)”.
Stacks 05G5 (1): if
Mis a finiteS-module thenM' = M ⊗[R] R'is a finiteS' = S ⊗[R] R'-module.
theorem Module.Finite.tensorBaseChange [Module.Finite S M] :
Module.Finite (S ⊗[R] R') (M ⊗[R] R')
Module.FinitePresentation.tensorBaseChange, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/FiniteStability.lean, line 165. The attribute's comment: “(2)”.
Stacks 05G5 (2): if
Mis a finitely presentedS-module thenM' = M ⊗[R] R'is a finitely presentedS' = S ⊗[R] R'-module.
theorem Module.FinitePresentation.tensorBaseChange [Module.FinitePresentation S M] :
Module.FinitePresentation (S ⊗[R] R') (M ⊗[R] R')
Declarations registered for the tag:
Algebra.FiniteType.baseChangeregistered withadd_to_stacksin StacksCore/RingTheory/FiniteStability.lean, line 171 (StacksCore): “(3): ifR → Sis of finite type then so is the base changeR' → S'.”. References: EGA I (6.3.4), “(iv), affine case”; EGA II (3.5.5), “special case”; EGA IV (1.3.1); EGA IV (1.5.4), “(iii), special case”; EGA IV (2.7.1.1), “partial”; SGA 1 VIII (3.4), “forward implication”.Algebra.FinitePresentation.baseChangeregistered withadd_to_stacksin StacksCore/RingTheory/FiniteStability.lean, line 173 (StacksCore): “(4): ifR → Sis of finite presentation then so is the base changeR' → S'.”. References: EGA IV (8.6.2), “special case”; EGA IV (1.4.1); EGA IV (1.4.3), “(iii), special case”; EGA IV (1.6.2), “(iii), special case”; SGA 1 VIII (3.6), “partial”; SGA 3 XIX (2.1), “special case”.Module.Finite.tensorProductregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Stacks05G5.lean, line 11 (StacksFrontier): “part 1”. References: EGA 0 (5.2.1), “special case”.FinitePresentation.of_isBaseChangeregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Stacks05G5.lean, line 12 (StacksFrontier): “part 2”.Algebra.FiniteType.baseChangeregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Stacks05G5.lean, line 13 (StacksFrontier): “part 3”. References: EGA I (6.3.4), “(iv), affine case”; EGA II (3.5.5), “special case”; EGA IV (1.3.1); EGA IV (1.5.4), “(iii), special case”; EGA IV (2.7.1.1), “partial”; SGA 1 VIII (3.4), “forward implication”.Algebra.FinitePresentation.baseChangeregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Stacks05G5.lean, line 14 (StacksFrontier): “part 4”. References: EGA IV (8.6.2), “special case”; EGA IV (1.4.1); EGA IV (1.4.3), “(iii), special case”; EGA IV (1.6.2), “(iii), special case”; SGA 1 VIII (3.6), “partial”; SGA 3 XIX (2.1), “special case”.
Tag 05DQ, a lemma
Tag 05DQ in the Stacks Project.
Declarations registered for the tag:
ModuleCat.extendRestrictScalarsAdjregistered withadd_to_stacksin StacksCore/Algebra/Category/ModuleCat/ChangeOfRings.lean, line 29 (StacksCore): “Base changeM ↦ S ⊗_R Mis left adjoint to restriction of scalarsN ↦ N_R. The tag writes the tensor product in the other order.”.LinearMap.liftBaseChangeEquivregistered withadd_to_stacksin StacksCore/RingTheory/TensorProduct/Basic.lean, line 22 (StacksCore): “Hom_R(M, N_R) = Hom_S(S ⊗_R M, N), as anS-linear equivalence. The tag writes the tensor product in the other order.”.
Tag 08YP, a lemma
Tag 08YP in the Stacks Project.
Declarations registered for the tag:
ModuleCat.restrictCoextendScalarsAdjregistered withadd_to_stacksin StacksCore/Algebra/Category/ModuleCat/ChangeOfRings.lean, line 33 (StacksCore): “Restriction of scalarsN ↦ N_Ris left adjoint to coextension of scalarsM ↦ Hom_R(S, M).”.ModuleCat.RestrictionCoextensionAdj.HomEquiv.fromRestrictionregistered withadd_to_stacksin StacksCore/Algebra/Category/ModuleCat/ChangeOfRings.lean, line 35 (StacksCore): “Hom_R(N_R, M) → Hom_S(N, Hom_R(S, M)), one direction of the tag's Hom-set formula.”.ModuleCat.RestrictionCoextensionAdj.HomEquiv.toRestrictionregistered withadd_to_stacksin StacksCore/Algebra/Category/ModuleCat/ChangeOfRings.lean, line 37 (StacksCore): “Hom_S(N, Hom_R(S, M)) → Hom_R(N_R, M), the other direction of the tag's Hom-set formula.”.
Tag 08YQ, a lemma
Tag 08YQ in the Stacks Project.
tensorHomAdjEquiv, a def in StacksCore (human-reviewed), declared in StacksCore/LinearAlgebra/TensorProduct/Tower.lean, line 116.
Stacks 08YQ:
Hom_R(M ⊗_S N, P) = Hom_S(M, Hom_R(N, P))forS-modulesM,Nand anR-moduleP.Stated
S-linearly rather than as a bare bijection: both sides carry the sourceS-action — the left throughM ⊗_S N, the right throughHom_R(N, P)— soSis the finer structure andR-linearity is its restriction. This matches how Mathlib states the sibling tag 05DQ, whereLinearMap.liftBaseChangeEquivis linear over the bigger ring.
noncomputable def tensorHomAdjEquiv : (M ⊗[S] N →ₗ[R] P) ≃ₗ[S] (M →ₗ[S] (N →ₗ[R] P))
Sources
Section10.15 Miscellany#
Section 10.15 of the Stacks Project, Tag 00DR. 7 tags here are carried by 13 declarations of the repository (9 in StacksCore and 4 in StacksFrontier) and 7 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 07K1, a lemma
Tag 07K1 in the Stacks Project.
Declarations registered for the tag:
Ideal.IsPrime.mul_leregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/Operations.lean, line 12 (StacksCore).Ideal.IsPrime.mul_leregistered withadd_to_stacksin StacksFrontier/RingTheory/Ideal/Operations.lean, line 25 (StacksFrontier).
Tag 0EHL, a lemma
Tag 0EHL in the Stacks Project.
Ideal.exists_add_mem_notMem, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Ideal/Operations.lean, line 173.
Stacks 0EHL. If the coset
x + Iis contained in none of the idealsp i, then somex + ywithy ∈ Iavoids all of them simultaneously.All but one of the
p imust be prime; the exceptional indexamatches the shape ofIdeal.subset_union_prime. Allowing two exceptional indices is false.
theorem exists_add_mem_notMem (a : ι) {s : Finset ι} {p : ι → Ideal R}
(hp : ∀ i ∈ s, i ≠ a → (p i).IsPrime) {I : Ideal R} {x : R}
(h : ∀ i ∈ s, ¬(x ∈ p i ∧ I ≤ p i)) : ∃ y ∈ I, ∀ i ∈ s, x + y ∉ p i
Ideal.exists_add_mem_notMem', a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Ideal/Operations.lean, line 189.
Stacks 0EHL in the tag's literal wording, via
Ideal.vadd_coe_subset_iff.
theorem exists_add_mem_notMem' (a : ι) {s : Finset ι} {p : ι → Ideal R}
(hp : ∀ i ∈ s, i ≠ a → (p i).IsPrime) {I : Ideal R} {x : R}
(h : ∀ i ∈ s, ¬x +ᵥ (I : Set R) ⊆ (p i : Set R)) : ∃ y ∈ I, ∀ i ∈ s, x + y ∉ p i
Tag 00DT, a lemma
Tag 00DT in the Stacks Project.
Declarations registered for the tag:
Ideal.prod_eq_iInf_of_pairwise_isCoprimeregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/Operations.lean, line 8 (StacksCore): “(1)”.Ideal.isCoprime_of_isMaximalregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/Operations.lean, line 9 (StacksCore): “(2)”.Ideal.IsMaximal.coprime_of_neregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/Operations.lean, line 10 (StacksCore): “(2)”.Ideal.quotientInfRingEquivPiQuotientregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/Quotient/Operations.lean, line 11 (StacksCore): “(1)”. References: EGA 0 (19.3.10.2), “special case”; SGA 3 XXII (5.9.10), “partial”; SGA 3 XXIV (3.9.1), “partial”.
Tag 07DQ, a lemma
Tag 07DQ in the Stacks Project.
Matrix.exists_mul_eq_smul_one_of_mem_minorIdeal, a theorem in StacksCore (human-reviewed), declared in StacksCore/LinearAlgebra/Matrix/Minor.lean, line 76. The attribute's comment: “(1)”.
Stacks 07DQ (1): every element of the ideal of maximal minors of
Ais realised as a scalar left inverse ofA.
theorem exists_mul_eq_smul_one_of_mem_minorIdeal {A : Matrix n m R} {f : R}
(hf : f ∈ A.minorIdeal) : ∃ B : Matrix m n R, B * A = f • 1
Matrix.pow_card_mem_minorIdeal, a theorem in StacksCore (human-reviewed), declared in StacksCore/LinearAlgebra/Matrix/Minor.lean, line 99. The attribute's comment: “(2)”.
Stacks 07DQ (2): a scalar left inverse of
Alies in the ideal of maximal minors ofAafter raising it to the number of columns ofA.
theorem pow_card_mem_minorIdeal {A : Matrix n m R} {B : Matrix m n R} {f : R}
(h : B * A = f • 1) : f ^ Fintype.card m ∈ A.minorIdeal
Matrix.mem_radical_minorIdeal_iff, a theorem in StacksCore (human-reviewed), declared in StacksCore/LinearAlgebra/Matrix/Minor.lean, line 107.
Stacks 07DQ, both parts at once: the radical of the ideal of maximal minors of
Ais exactly the set of scalars some power of which admits a left inverse againstA.
theorem mem_radical_minorIdeal_iff {A : Matrix n m R} {f : R} :
f ∈ A.minorIdeal.radical ↔ ∃ k : ℕ, ∃ B : Matrix m n R, B * A = (f ^ k) • 1
exists_matrix_of_mem_minorIdeal, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/Matrix/MaximalMinors.lean, line 62. The attribute's comment: “(1)”.
Statement 1. For any
fin the idealJgenerated by them × mminors ofA, there is anm × nmatrixBwithB * A = f • 1(them × mmatrixf · I_m).
theorem exists_matrix_of_mem_minorIdeal (A : Matrix (Fin n) (Fin m) R)
(f : R) (hf : f ∈ maximalMinorsIdeal A) :
∃ B : Matrix (Fin m) (Fin n) R, B * A = f • (1 : Matrix (Fin m) (Fin m) R)
pow_mem_minorIdeal_of_matrix, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/Matrix/MaximalMinors.lean, line 141. The attribute's comment: “(2)”.
Statement 2. If
B * A = f • 1for somem × nmatrixB, thenf ^ mlies in the idealJgenerated by them × mminors ofA.
theorem pow_mem_minorIdeal_of_matrix (A : Matrix (Fin n) (Fin m) R)
(f : R) (B : Matrix (Fin m) (Fin n) R)
(hB : B * A = f • (1 : Matrix (Fin m) (Fin m) R)) :
f ^ m ∈ maximalMinorsIdeal A
Tag 080R, a lemma
Tag 080R in the Stacks Project.
Matrix.fromRows_mul_adjugate, a theorem in StacksCore (human-reviewed), declared in StacksCore/LinearAlgebra/Matrix/Adjugate.lean, line 34.
Stacks 080R.
theorem fromRows_mul_adjugate (A₁ : Matrix m m R) (A₂ : Matrix p m R) :
fromRows A₁ A₂ * adjugate A₁ =
fromRows (A₁.det • (1 : Matrix m m R))
(Matrix.of fun (i : p) (j : m) => (A₁.updateRow j (A₂ i)).det)
Matrix.fromRows_mul_adjugate_apply_inr, a theorem in StacksCore (human-reviewed), declared in StacksCore/LinearAlgebra/Matrix/Adjugate.lean, line 44.
Stacks 080R, identifying the bottom block's entries as
m × mminors of the stacked matrix — with no sign, taking the rows in the order1, …, ĵ, …, mwithiat slotj.
theorem fromRows_mul_adjugate_apply_inr (A₁ : Matrix m m R)
(A₂ : Matrix p m R) (i : p) (j : m) :
(fromRows A₁ A₂ * adjugate A₁) (Sum.inr i) j =
((fromRows A₁ A₂).submatrix (Function.update Sum.inl j (Sum.inr i)) id).det
ab_top_block, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/Matrix/MaximalMinors.lean, line 309. The attribute's comment: “top block”.
Top block. With
B = adj(A₁)andf = det(A₁), the topm × mblock ofA * Bisf • 1: for all row/column indicesi, jin the top block,(A * B)_{i j} = f · δ_{i j}.
theorem ab_top_block (hmn : m₀ + 1 ≤ n) (A : Matrix (Fin n) (Fin (m₀ + 1)) R)
(i j : Fin (m₀ + 1)) :
(A * (topBlock hmn A).adjugate) (Fin.castLE hmn i) j
= (topBlock hmn A).det • (1 : Matrix (Fin (m₀ + 1)) (Fin (m₀ + 1)) R) i j
ab_bottom_block, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/LinearAlgebra/Matrix/MaximalMinors.lean, line 323. The attribute's comment: “bottom block”.
Bottom block. With
B = adj(A₁), for a row indexilying in the bottom block (i.e.m ≤ i, herem₀ + 1 ≤ i) and any column indexj,(A * B)_{i j} = (-1)^{m - j} · det(M_{i j}).
theorem ab_bottom_block (hmn : m₀ + 1 ≤ n) (A : Matrix (Fin n) (Fin (m₀ + 1)) R)
(i : Fin n) (j : Fin (m₀ + 1)) :
(A * (topBlock hmn A).adjugate) i j
= (-1) ^ (m₀ - (j : ℕ)) * (minorMat hmn A i j).det
Tag 05WI, a lemma
Tag 05WI in the Stacks Project.
Module.not_injective_of_spanRank_lt, a theorem in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/SpanRank.lean, line 31.
Stacks 05WI, in its general form: no nontriviality or
Ringhypothesis, and stated as non-injectivity rather than as a nonzero kernel.
theorem not_injective_of_spanRank_lt [StrongRankCondition R] {n : ℕ}
(h : (⊤ : Submodule R M).spanRank < n) (f : (Fin n → R) →ₗ[R] M) :
¬ Function.Injective f
LinearMap.ker_ne_bot_of_spanRank_lt, a theorem in StacksCore (human-reviewed), declared in StacksCore/Algebra/Module/SpanRank.lean, line 52.
Stacks 05WI in the tag's literal wording: the kernel is nonzero. The tag's
n ≥ 1is implied byspanRank ⊤ < n, andModule.Finite Mis not needed.
theorem LinearMap.ker_ne_bot_of_spanRank_lt {n : ℕ}
(h : (⊤ : Submodule R M).spanRank < n) (f : (Fin n → R) →ₗ[R] M) : LinearMap.ker f ≠ ⊥
Tag 0FJ7, a lemma
Tag 0FJ7 in the Stacks Project.
Declarations registered for the tag:
invariantBasisNumber_of_nontrivial_of_commRingregistered withadd_to_stacksin StacksCore/LinearAlgebra/InvariantBasisNumber.lean, line 13 (StacksCore).
Sources
Section10.16 Cayley-Hamilton#
Section 10.16 of the Stacks Project, Tag 05G6. 4 tags here are carried by 4 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00DX, a lemma
Tag 00DX in the Stacks Project.
Declarations registered for the tag:
Matrix.aeval_self_charpolyregistered withadd_to_stacksin StacksCore/LinearAlgebra/Matrix/Charpoly/Basic.lean, line 9 (StacksCore). References: EGA II (6.4.1); EGA II (6.4.8), “special case”; SGA 3 XIV (2.13), “special case”.
Tag 05BT, a lemma
Tag 05BT in the Stacks Project.
Declarations registered for the tag:
LinearMap.exists_monic_and_aeval_eq_zeroregistered withadd_to_stacksin StacksCore/LinearAlgebra/Matrix/Charpoly/LinearMap.lean, line 8 (StacksCore). References: SGA 7 XIV (4.5), “forward implication”.
Tag 05G7, a lemma
Tag 05G7 in the Stacks Project.
Declarations registered for the tag:
LinearMap.exists_monic_and_natDegree_eq_and_coeff_mem_pow_and_aeval_eq_zeroregistered withadd_to_stacksin StacksCore/LinearAlgebra/Matrix/Charpoly/LinearMap.lean, line 9 (StacksCore).
Tag 05G8, a lemma
Tag 05G8 in the Stacks Project.
Declarations registered for the tag:
OrzechProperty.bijective_of_surjective_endomorphismregistered withadd_to_stacksin StacksCore/RingTheory/OrezchProperty.lean, line 8 (StacksCore).
Sources
Section10.17 The spectrum of a ring#
Section 10.17 of the Stacks Project, Tag 00DY. 9 tags here are carried by 4 declarations of the repository (all in StacksCore) and 25 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00DZ, a definition
Tag 00DZ in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrumregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 8 (StacksCore). References: EGA I (1.1.1); EGA IV (10.4.4); EGA IV (10.5.1).PrimeSpectrum.zeroLocusregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 9 (StacksCore). References: EGA 0 (16.3.1); EGA I (1.1.1); EGA I (1.1.5).PrimeSpectrum.basicOpenregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 9 (StacksCore). References: EGA I (1.1.1); EGA IV (20.2.9), “special case”.
Tag 00E0, a lemma
Tag 00E0 in the Stacks Project.
PrimeSpectrum.basicOpen_eq_top_iff_isUnit, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 33. The attribute's comment: “17”.
theorem basicOpen_eq_top_iff_isUnit {f : R} :
basicOpen f = ⊤ ↔ IsUnit f
PrimeSpectrum.basicOpen_eq_of_unit_mul, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 39. The attribute's comment: “13”. References: EGA I (1.1.9), “last clause”.
theorem basicOpen_eq_of_unit_mul {f f' u : R} (hu : IsUnit u) (h : f = u * f') :
basicOpen f = basicOpen f'
PrimeSpectrum.exists_basicOpen_disjoint_zeroLocus, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 44. The attribute's comment: “14”.
theorem exists_basicOpen_disjoint_zeroLocus {I : Ideal R} {p : PrimeSpectrum R}
(hp : p ∉ zeroLocus (I : Set R)) : ∃ f : R, p ∈ basicOpen f ∧
(basicOpen f : Set (PrimeSpectrum R)) ∩ zeroLocus (I : Set R) = ∅
PrimeSpectrum.iUnion_basicOpen_eq_compl_zeroLocus, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 56. The attribute's comment: “16”. References: EGA I (1.1.1), “more general”.
theorem iUnion_basicOpen_eq_compl_zeroLocus {ι : Type*} (f : ι → R) :
(⋃ i, (basicOpen (f i) : Set (PrimeSpectrum R))) = (zeroLocus (Set.range f))ᶜ
Declarations registered for the tag:
Ideal.exists_maximalregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/Maximal.lean, line 16 (StacksCore): “2”.Ideal.nonempty_minimalPrimesregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/MinimalPrime/Basic.lean, line 8 (StacksCore): “3”. References: EGA 0 (1.0.6), “more general”.Ideal.exists_minimalPrimes_leregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/MinimalPrime/Basic.lean, line 9 (StacksCore): “4”.Ideal.radical_eq_sInfregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/Operations.lean, line 11 (StacksCore): “7”. References: EGA 0 (1.1.1), “partial”; EGA I (1.1.1), “more general”; EGA I (1.1.5), “partial”.PrimeSpectrum.isEmpty_iff_subsingletonregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 10 (StacksCore): “1”. References: EGA I (1.1.1), “more general”.PrimeSpectrum.zeroLocus_spanregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 11 (StacksCore): “5”.PrimeSpectrum.zeroLocus_radicalregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 12 (StacksCore): “6”. References: EGA I (1.1.2), “(v) for ideals”.PrimeSpectrum.zeroLocus_empty_iff_eq_topregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 13 (StacksCore): “8”.PrimeSpectrum.zeroLocus_infregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 14 (StacksCore): “9”. References: EGA 0 (1.7.4), “two ideals, special case”; EGA I (1.1.5), “more general”.PrimeSpectrum.zeroLocus_iUnionregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Basic.lean, line 15 (StacksCore): “10”. References: EGA I (1.1.2), “(iii): V(⋃E_λ)=⋂V(E_λ)”.PrimeSpectrum.basicOpen_eq_zeroLocus_complregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 10 (StacksCore): “11”. References: EGA I (1.1.1), “more general”.PrimeSpectrum.basicOpen_eq_bot_iffregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 11 (StacksCore): “12”.PrimeSpectrum.basicOpen_mulregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 12 (StacksCore): “15”. References: EGA I (1.1.9), “more general”; EGA III (6.7.1), “special case”.
Tag 00E1, a definition
Tag 00E1 in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrum.zariskiTopologyregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 13 (StacksCore).
Tag 00E2, a lemma
Tag 00E2 in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrum.comapregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 14 (StacksCore). References: EGA 0 (14.1.12); EGA I (1.2.1); EGA I (1.7.2), “partial”; EGA I (10.2.1), “special case”.PrimeSpectrum.comap_basicOpenregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 15 (StacksCore). References: EGA I (1.2.2), “more general”; EGA I (1.6.1), “more general”; EGA I (10.2.1), “special case”.
Tag 00E3, a lemma
Tag 00E3 in the Stacks Project.
Declarations registered for the tag:
IsLocalization.primeSpectrumOrderIsoregistered withadd_to_stacksin StacksCore/RingTheory/Localization/Ideal.lean, line 14 (StacksCore). References: EGA 0 (1.2.6); EGA I (1.2.6), “partial”; EGA IV (10.7.3), “partial”.PrimeSpectrum.localization_comap_isInducingregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 16 (StacksCore). References: EGA I (1.6.2), “partial”.
Tag 00E4, a lemma
Tag 00E4 in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrum.localization_away_isOpenEmbeddingregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 17 (StacksCore). References: EGA I (1.3.6), “partial”; EGA I (1.6.2), “special case”.
Tag 00E5, a lemma
Tag 00E5 in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrum.isClosedEmbedding_comap_of_surjectiveregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 18 (StacksCore). References: EGA I (1.2.4), “more general”.
Tag 00E8, a lemma
Tag 00E8 in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrum.compactSpaceregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 19 (StacksCore). References: EGA I (1.1.10), “more general”.
Tag 04PM, a lemma
Tag 04PM in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrum.instSpectralSpaceregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 22 (StacksCore). References: EGA I (1.1.8), “more general”; EGA I (1.1.10), “more general”.
Sources
Section10.18 Local rings#
Section 10.18 of the Stacks Project, Tag 07BH. 4 tags here are carried by 5 declarations of the repository (all in StacksCore) and 10 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 07BI, a definition
Tag 07BI in the Stacks Project.
Declarations registered for the tag:
IsLocalHomregistered withadd_to_stacksin StacksCore/Algebra/Group/Units/Hom.lean, line 21 (StacksCore): “A local homomorphism of local rings:φ(𝔪_R) ⊆ 𝔪_S. Mathlib states the equivalent reflects-units condition, which needs noIsLocalRinginstance; the equivalence isIsLocalRing.local_hom_TFAE(tag 07BJ).”. References: EGA 0 (10.3.1.3); EGA 0 (1.0.7); EGA IV (18.6.1).IsLocalRingregistered withadd_to_stacksin StacksCore/RingTheory/LocalRing/Defs.lean, line 20 (StacksCore): “A local ring is a ring with exactly one maximal ideal. Mathlib defines this by the equivalent condition that the ring is nontrivial andaorbis a unit whenevera + b = 1; seeIsLocalRing.maximal_ideal_uniquefor the Stacks wording.”. References: EGA 0 (10.3.1.2); EGA 0 (10.3.1.3); EGA 0 (1.0.7); EGA 0 (22.4.1); EGA 0 (22.5.3); SGA 3 VIA (0.2).IsLocalRing.maximal_ideal_uniqueregistered withadd_to_stacksin StacksCore/RingTheory/LocalRing/MaximalIdeal/Basic.lean, line 26 (StacksCore): “∃! I, I.IsMaximal— the Stacks project's own phrasing of the definition of a local ring, which Mathlib derives from itsa + b = 1formulation.”. References: EGA 0 (1.0.7), “partial”.IsLocalRing.maximalIdealregistered withadd_to_stacksin StacksCore/RingTheory/LocalRing/MaximalIdeal/Defs.lean, line 16 (StacksCore): “The maximal ideal𝔪_Rof a local ringR, realised as the ideal of nonunits.”. References: EGA 0 (10.3.1.3); EGA 0 (1.0.7); EGA 0 (5.5.1); EGA I (1.1.1); EGA IV (17.15.8); EGA IV (3.4.1).IsLocalRing.ResidueFieldregistered withadd_to_stacksin StacksCore/RingTheory/LocalRing/ResidueField/Defs.lean, line 16 (StacksCore): “The residue fieldκ = R/𝔪_Rof a local ring.”. References: EGA 0 (10.3.1.2); EGA 0 (10.3.1.3); EGA 0 (1.0.7); EGA 0 (5.5.1); EGA 0 (22.4.1); EGA 0 (22.5.3); EGA I (1.1.1); EGA I (2.4.5); EGA II (7.1.5); SGA 1 I (2.1); SGA 1 I (7.5); SGA 1 III (1.7); SGA 2 III (2.8), “special case”; SGA 3 VIIB (0.2.1); SGA 3 VIA (0.2).IsLocalRing.residueregistered withadd_to_stacksin StacksCore/RingTheory/LocalRing/ResidueField/Defs.lean, line 17 (StacksCore): “The quotient mapR → R/𝔪_R = κonto the residue field.”. References: EGA I (2.4.5).
Tag 0H70, an example
Tag 0H70 in the Stacks Project.
not_isLocalHom_algebraMap_atPrime, a theorem in StacksCore (human-reviewed), declared in StacksCore/Counterexamples/LocalHom.lean, line 30.
Stacks 0H70: for a local ring
Rand a non-maximal prime𝔭, the localization mapR → R_𝔭is not a local homomorphism.The witness is any
x ∈ 𝔪_R \ 𝔭, which exists precisely because𝔭 ⊊ 𝔪_R: it becomes a unit inR_𝔭, so a local homomorphism would force it to be a unit already inR, contradictingx ∈ 𝔪_R.
theorem not_isLocalHom_algebraMap_atPrime {R : Type*} [CommRing R] [IsLocalRing R]
(p : Ideal R) [hp : p.IsPrime] (hne : p ≠ maximalIdeal R) :
¬ IsLocalHom (algebraMap R (Localization.AtPrime p))
Tag 00E9, a lemma
Tag 00E9 in the Stacks Project.
isLocalRing_iff_exists_maximal_isUnit, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/LocalRing/MaximalIdeal/Basic.lean, line 41. The attribute's comment: “(1) ⇔ (3)”.
Stacks 00E9, clause (1) ⇔ (3): a ring is local if and only if it has a maximal ideal
msuch that every element outsidemis a unit.The forward direction takes
mto beIsLocalRing.maximalIdeal R, where being outsidemis definitionally being a unit (IsLocalRing.notMem_maximalIdeal). The reverse direction cannot useIsLocalRing.of_unique_max_idealdirectly — that wants uniqueness, which is not assumed — so it goes throughIsLocalRing.of_nonunits_add: the hypothesis says every nonunit lies inm, andmis closed under addition. Nontriviality comes fromm ≠ ⊤.
theorem isLocalRing_iff_exists_maximal_isUnit {R : Type*} [CommSemiring R] :
IsLocalRing R ↔ ∃ m : Ideal R, m.IsMaximal ∧ ∀ x : R, x ∉ m → IsUnit x
isLocalRing_iff_existsUnique_isClosed_singleton, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 145. The attribute's comment: “(1) ⇔ (2)”. References: EGA I (2.4.1), “more general”.
Stacks 00E9, clause (1) ⇔ (2): a ring is local if and only if its spectrum has exactly one closed point.
The clause is genuinely topological, so it is stated that way rather than as uniqueness of a maximal ideal.
PrimeSpectrum.isClosed_singleton_iff_isMaximalis what converts between the two, in both directions; the rest is transport betweenPrimeSpectrum RandIdeal RalongPrimeSpectrum.ext.No nontriviality hypothesis is needed: for the zero ring the spectrum is empty, so it has no closed point at all and clause (2) fails on its own.
theorem isLocalRing_iff_existsUnique_isClosed_singleton {R : Type*} [CommSemiring R] :
IsLocalRing R ↔ ∃! p : PrimeSpectrum R, IsClosed ({p} : Set (PrimeSpectrum R))
Declarations registered for the tag:
IsLocalRing.isUnit_or_isUnit_one_sub_selfregistered withadd_to_stacksin StacksCore/RingTheory/LocalRing/Basic.lean, line 24 (StacksCore): “(1) ⇒ (4): in a local ring,xor1 - xis a unit.”.IsLocalRing.of_isUnit_or_isUnit_one_sub_selfregistered withadd_to_stacksin StacksCore/RingTheory/LocalRing/Basic.lean, line 26 (StacksCore): “(4) ⇒ (1): a nontrivial ring in whichxor1 - xis always a unit is local.”.
Tag 00E7, a lemma
Tag 00E7 in the Stacks Project.
Ideal.nontrivial_fiber_iff, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Fiber.lean, line 75. The attribute's comment: “(2) ⇔ (3)”.
Stacks 00E7, clause (2) ⇔ clause (3): the fibre
κ(𝔭) ⊗_R Sis nonzero if and only ifS_𝔭 / 𝔭 S_𝔭is nonzero.Both are ways of saying the fibre of
Spec S → Spec Rover𝔭is nonempty; for the link to clause (1), that𝔭lies in the image, seePrimeSpectrum.nontrivial_iff_mem_rangeComap(tagged inStacksCore.RingTheory.Spectrum.Prime.RingHom).
theorem nontrivial_fiber_iff :
Nontrivial (p.Fiber S) ↔ Nontrivial (Sp ⧸ p.map (algebraMap R Sp))
Ideal.nontrivial_quotient_localization_iff, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Fiber.lean, line 128. The attribute's comment: “(3) ⇔ (4)”.
Stacks 00E7, clause (3) ⇔ clause (4):
S_𝔭 / 𝔭 S_𝔭is nonzero if and only if(S/𝔭S)_𝔭is nonzero.
theorem nontrivial_quotient_localization_iff :
Nontrivial SpS ↔ Nontrivial (Sp ⧸ p.map (algebraMap R Sp))
Declarations registered for the tag:
PrimeSpectrum.mem_range_comap_iffregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/RingHom.lean, line 43 (StacksCore): “(1) ⇔ (5):𝔭is in the image ofSpec S → Spec Riff𝔭 = φ⁻¹(𝔭S).”.PrimeSpectrum.nontrivial_iff_mem_rangeComapregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/RingHom.lean, line 45 (StacksCore): “(1) ⇔ (2):𝔭is in the image ofSpec S → Spec Riff the fibreκ(𝔭) ⊗[R] Sis nonzero. The tag writes the tensor product in the other order.”.
Sources
Section10.19 The Jacobson radical of a ring#
Section 10.19 of the Stacks Project, Tag 0AMD. 2 tags here are carried by 2 declarations of the repository (all in StacksCore) and 1 registered declaration, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 0AME, a lemma
Tag 0AME in the Stacks Project.
Ideal.le_ringJacobson_iff_isUnit_one_add, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Jacobson/Ideal.lean, line 35. The attribute's comment: “(1) ⇔ (2)”.
Stacks 0AME, (1) ⇔ (2): an ideal is contained in the Jacobson radical if and only if every element of
1 + Iis a unit.Forwards is
Ideal.mem_jacobson_botaty = 1. Backwards uses thatIis an ideal: to placex ∈ Iin the radical one must invert1 + x * yfor everyy, andx * yis again inI.
theorem le_ringJacobson_iff_isUnit_one_add (I : Ideal R) :
I ≤ Ring.jacobson R ↔ ∀ x ∈ I, IsUnit (1 + x)
Ideal.isUnit_of_isUnit_quotient_mk, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Jacobson/Ideal.lean, line 49. The attribute's comment: “in this case a unit mod I is a unit”.
Stacks 0AME, the closing clause: if
Iis contained in the Jacobson radical, then an element ofRwhose image inR ⧸ Iis a unit is itself a unit.Given a right inverse
ymodI, the differencex * y - 1lies inIand hence in the radical, sox * yis a unit byIdeal.isUnit_of_sub_one_mem_jacobson_bot; a factor of a unit in a commutative ring is a unit.
theorem isUnit_of_isUnit_quotient_mk (I : Ideal R) (h : I ≤ Ring.jacobson R) (x : R)
(hx : IsUnit (Ideal.Quotient.mk I x)) : IsUnit x
Tag 0B7C, a lemma
Tag 0B7C in the Stacks Project.
Declarations registered for the tag:
IsLocalHom.of_comap_surjectiveregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/RingHom.lean, line 49 (StacksCore).
Sources
Section10.20 Nakayama's lemma#
Section 10.20 of the Stacks Project, Tag 07RC. 3 tags here are carried by 12 declarations of the repository (all in StacksCore) and 1 registered declaration, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00DV, a lemma
Tag 00DV in the Stacks Project.
LinearMap.exists_sub_one_mem_and_map_surjective_of_surjective_comp_mkQ, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 93. The attribute's comment: “(5)”.
Stacks 00DV (5): if
φ : N →ₗ[R] MhasN/IN → M/IMsurjective andMis finite, then somer ∈ 1 + Imakesφsurjective after localizing at the powers ofr.Stated against arbitrary localization witnesses
fN,fM, so it applies to any model ofN_randM_r. For the concreteLocalizedModulereading seeLinearMap.exists_sub_one_mem_and_localizedMap_surjective_of_surjective_comp_mkQ.Dropping the hypothesis
I ≤ rad(R)ofLinearMap.surjective_of_surjective_comp_mkQ(part (6)) costs surjectivity ofφitself; inverting one element of1 + Irecovers it.
theorem LinearMap.exists_sub_one_mem_and_map_surjective_of_surjective_comp_mkQ
(I : Ideal R) (φ : N →ₗ[R] M) [Module.Finite R M]
(hsurj : Function.Surjective ((I • (⊤ : Submodule R M)).mkQ ∘ₗ φ)) :
∃ r : R, r - 1 ∈ I ∧ ∀ {Nᵣ Mᵣ : Type*} [AddCommGroup Nᵣ] [Module R Nᵣ]
[AddCommGroup Mᵣ] [Module R Mᵣ] (fN : N →ₗ[R] Nᵣ) (fM : M →ₗ[R] Mᵣ)
[IsLocalizedModule (Submonoid.powers r) fN] [IsLocalizedModule (Submonoid.powers r) fM],
Function.Surjective (IsLocalizedModule.map (Submonoid.powers r) fN fM φ)
LinearMap.exists_sub_one_mem_and_localizedMap_surjective_of_surjective_comp_mkQ, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 114. The attribute's comment: “(5)”.
Stacks 00DV (5), in the concrete
LocalizedModulemodel: the tag's literal "N_f → M_fis surjective".This is
LinearMap.exists_sub_one_mem_and_map_surjective_of_surjective_comp_mkQat the canonical witnessesLocalizedModule.mkLinearMap.
theorem LinearMap.exists_sub_one_mem_and_localizedMap_surjective_of_surjective_comp_mkQ
(I : Ideal R) (φ : N →ₗ[R] M) [Module.Finite R M]
(hsurj : Function.Surjective ((I • (⊤ : Submodule R M)).mkQ ∘ₗ φ)) :
∃ r : R, r - 1 ∈ I ∧
Function.Surjective (LocalizedModule.map (Submonoid.powers r) φ)
Submodule.exists_sub_one_mem_and_span_image_eq_top, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 136. The attribute's comment: “(7)”.
Stacks 00DV (7): if
sgeneratesM/IMandMis finite, then somer ∈ 1 + ImakessgenerateMafter localizing at the powers ofr."
sgeneratesM/IM" is taken literally, assspanning the quotientM ⧸ I • ⊤. Internally that is converted to theSubmodule.span R s ⊔ I • ⊤ = ⊤form which part (3) consumes, byspan_sup_smul_top_eq_top_of_span_image_mk_eq_top. Stated against arbitrary localization witnessesS,fM; for the concrete reading seeSubmodule.exists_sub_one_mem_and_span_image_mkLinearMap_eq_top.The tag writes a finite list
x₁, …, xₙ, but finiteness of the generating set is not used — only finiteness ofM. Takes := Set.range xto recover the tag's form.
theorem Submodule.exists_sub_one_mem_and_span_image_eq_top
(I : Ideal R) [Module.Finite R M] (s : Set M)
(hs : Submodule.span R
(Submodule.Quotient.mk '' s : Set (M ⧸ I • (⊤ : Submodule R M))) = ⊤) :
∃ r : R, r - 1 ∈ I ∧ ∀ {S Mᵣ : Type*} [CommRing S] [Algebra R S]
[AddCommGroup Mᵣ] [Module R Mᵣ] [Module S Mᵣ] [IsScalarTower R S Mᵣ]
[IsLocalization (Submonoid.powers r) S] (fM : M →ₗ[R] Mᵣ)
[IsLocalizedModule (Submonoid.powers r) fM],
Submodule.span S (fM '' s) = ⊤
Submodule.exists_sub_one_mem_and_span_image_mkLinearMap_eq_top, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 158. The attribute's comment: “(7)”.
Stacks 00DV (7), in the concrete
LocalizedModulemodel: the tag's literal "x₁, …, xₙgenerateM_foverR_f".
theorem Submodule.exists_sub_one_mem_and_span_image_mkLinearMap_eq_top
(I : Ideal R) [Module.Finite R M] (s : Set M)
(hs : Submodule.span R
(Submodule.Quotient.mk '' s : Set (M ⧸ I • (⊤ : Submodule R M))) = ⊤) :
∃ r : R, r - 1 ∈ I ∧
Submodule.span (Localization (Submonoid.powers r))
(LocalizedModule.mkLinearMap (Submonoid.powers r) M '' s) = ⊤
Submodule.eq_bot_of_le_smul_of_isNilpotent, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 170. The attribute's comment: “(9)”.
Stacks 00DV (9): if
N ≤ I • NandIis nilpotent, thenN = ⊥.
theorem Submodule.eq_bot_of_le_smul_of_isNilpotent (I : Ideal R) (N : Submodule R M)
(hI : IsNilpotent I) (hN : N ≤ I • N) : N = ⊥
Submodule.le_of_le_smul_of_isNilpotent, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 189. The attribute's comment: “(10)”.
Stacks 00DV (10): if
N' ≤ N ⊔ I • N'andIis nilpotent, thenN' ≤ N.The nilpotent counterpart of
Submodule.le_of_le_smul_of_le_jacobson_bot(part (4)), which assumesI ≤ jacobson ⊥andN'.FGinstead; as everywhere in this block the finiteness goes.This is (9) read in
M ⧸ N: mapping the hypothesis throughN.mkQkills theNsummand (Submodule.mkQ_map_self) whileSubmodule.map_smul''carriesI • N'across, leavingmap N.mkQ N' ≤ I • map N.mkQ N'— exactly (9)'s hypothesis on the quotient.The tag words it as
M = N + I N'; that is the caseN' := ⊤, reached from the tag's hypothesis viaI • N' ≤ I • ⊤. Parts (11) and (12) are both this lemma atN' := ⊤, withNtaken to berange φandspan R srespectively.
theorem Submodule.le_of_le_smul_of_isNilpotent {I : Ideal R} {N N' : Submodule R M}
(hI : IsNilpotent I) (hNN : N' ≤ N ⊔ I • N') : N' ≤ N
LinearMap.surjective_of_surjective_comp_mkQ_of_isNilpotent, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 199. The attribute's comment: “(11)”.
Stacks 00DV (11): if
φ : N →ₗ[R] MhasN/IN → M/IMsurjective andIis nilpotent, thenφis surjective.
theorem LinearMap.surjective_of_surjective_comp_mkQ_of_isNilpotent
(I : Ideal R) (φ : N →ₗ[R] M) (hI : IsNilpotent I)
(hsurj : Function.Surjective ((I • (⊤ : Submodule R M)).mkQ ∘ₗ φ)) :
Function.Surjective φ
Submodule.span_eq_top_of_span_image_mkQ_eq_top_of_isNilpotent, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Nakayama.lean, line 214. The attribute's comment: “(12)”.
Stacks 00DV (12): if
sgeneratesM/IMandIis nilpotent, thensgeneratesM.The nilpotent counterpart of part (8), and (10) at
N := span R s,N' := ⊤. As in part (7) the hypothesis is taken literally —sspans the quotientM ⧸ I • ⊤— and nothing requiressto be finite, so the tag's{xα}is an arbitrarys : Set M. Unlike (7),Mneed not be finite either.
theorem Submodule.span_eq_top_of_span_image_mkQ_eq_top_of_isNilpotent
(I : Ideal R) (hI : IsNilpotent I) (s : Set M)
(hs : Submodule.span R
(Submodule.Quotient.mk '' s : Set (M ⧸ I • (⊤ : Submodule R M))) = ⊤) :
Submodule.span R s = ⊤
Declarations registered for the tag:
LinearMap.surjective_of_surjective_comp_mkQregistered withadd_to_stacksin StacksCore/RingTheory/Nakayama.lean, line 62 (StacksCore): “(6):N → MwithN/IN → M/IMsurjective,Mfinite andI ⊆ rad(R)forcesN → Msurjective. Mathlib swaps the names of source and target.”. References: EGA 0 (7.1.14), “sufficiency”; SGA 3 V (4.1.3), “more general”; SGA 4 XIII (1.5), “special case”.
Tag 0GLX, a lemma
Tag 0GLX in the Stacks Project.
Module.exists_localizedMap_away_surjective_of_localizedMap_surjective, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Support.lean, line 82. The attribute's comment: “the footnote's special case (I), I = 0; for the general statement see Submodule.exists_mem_addIdeal_and_span_image_eq_top below”.
Stacks 0GLX, special case (I)
I = 0: ifφbecomes surjective after localizing atS, it is already surjective after localizing at a singlef ∈ S.Taking
φto be(a₁, …, a_r) ↦ ∑ aⱼxⱼrecovers the footnote's wording: ifx₁, …, x_rgenerateS⁻¹M, then they generateM_ffor somef ∈ S.The arbitrary-submonoid form of
Module.exists_localizedMap_away_surjective_of_localizedMap_atPrime_surjective, and it needs onlyModule.Finiteon the target —Module.FinitePresentation, which the bijective analogueexists_bijective_map_powersrequires, is not needed for surjectivity alone.
theorem Module.exists_localizedMap_away_surjective_of_localizedMap_surjective
{N : Type*} [AddCommGroup N] [Module R N]
(S : Submonoid R) [Module.Finite R M] (φ : N →ₗ[R] M)
(hφ : Function.Surjective (LocalizedModule.map S φ)) :
∃ f ∈ S, Function.Surjective (LocalizedModule.map (Submonoid.powers f) φ)
Submodule.exists_mem_addIdeal_and_span_image_eq_top, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Support.lean, line 172. References: EGA IV (2.5.8.8), “partial, special case”; SGA 3 V (4.1.3), “more general”; SGA 6 III (5.4.1), “special case”.
Stacks 0GLX: if
sgeneratesS⁻¹(M/IM)andMis finite, thensgeneratesM_ffor somef ∈ S + I.The proof does not follow the Stacks argument, which localizes twice — first at some
s ∈ S, then at someg ∈ 1 + I_svia Nakayama — and then glues the two into a singlef = ss' + is, a step the tag leaves as "details omitted". Instead it localizes once, atT = S + I.That works because
Tis a submonoid (Submonoid.addIdeal) which absorbsIunder addition, soIlands in the Jacobson radical ofT⁻¹R(Ideal.map_addIdeal_le_ringJacobson) and Nakayama applies overTdirectly. Concretely: enlarge the hypothesis fromStoT(Submodule.span_image_eq_top_iffat both ends), strip the quotient, apply 00DV (4) (Submodule.le_of_le_smul_of_le_jacobson_bot) to get thatsspansT⁻¹M, then descend to a singlef ∈ Tby theI = 0case above.S + Iis not an ad-hoc answer: it is exactly the submonoid over whichIbecomes Jacobson.Stated against arbitrary localization witnesses; see
Submodule.exists_mem_addIdeal_and_span_image_mkLinearMap_eq_topfor the concrete reading. The hypothesis is phrased overS⁻¹Rrather than the tag'sS⁻¹(R/I); spans agree along the surjectionS⁻¹R ↠ S⁻¹(R/I), so this is a simplification and not a weakening. As in 00DV (7),sneed not be finite — onlyM— and the tag'sx₁, …, x_riss := Set.range x.
theorem Submodule.exists_mem_addIdeal_and_span_image_eq_top
(S : Submonoid R) (I : Ideal R) [Module.Finite R M] (s : Set M)
{Rₛ Qₛ : Type*} [CommRing Rₛ] [Algebra R Rₛ] [IsLocalization S Rₛ]
[AddCommGroup Qₛ] [Module R Qₛ] [Module Rₛ Qₛ] [IsScalarTower R Rₛ Qₛ]
(fQ : (M ⧸ I • (⊤ : Submodule R M)) →ₗ[R] Qₛ) [IsLocalizedModule S fQ]
(hs : Submodule.span Rₛ (fQ '' (Submodule.Quotient.mk '' s)) = ⊤) :
∃ f ∈ S.addIdeal I, ∀ {Rf Mf : Type*} [CommRing Rf] [Algebra R Rf]
[IsLocalization (Submonoid.powers f) Rf] [AddCommGroup Mf] [Module R Mf] [Module Rf Mf]
[IsScalarTower R Rf Mf] (g : M →ₗ[R] Mf) [IsLocalizedModule (Submonoid.powers f) g],
Submodule.span Rf (g '' s) = ⊤
Submodule.exists_mem_addIdeal_and_span_image_mkLinearMap_eq_top, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Support.lean, line 194.
Stacks 0GLX, in the concrete
LocalizedModulemodel: the tag's literalM_f.
theorem Submodule.exists_mem_addIdeal_and_span_image_mkLinearMap_eq_top
(S : Submonoid R) (I : Ideal R) [Module.Finite R M] (s : Set M)
(hs : Submodule.span (Localization S)
(LocalizedModule.mkLinearMap S (M ⧸ I • (⊤ : Submodule R M)) ''
(Submodule.Quotient.mk '' s)) = ⊤) :
∃ f ∈ S.addIdeal I, Submodule.span (Localization (Submonoid.powers f))
(LocalizedModule.mkLinearMap (Submonoid.powers f) M '' s) = ⊤
Tag 0E8M, a lemma
Tag 0E8M in the Stacks Project.
IsLocalRing.surjective_of_surjective_mapCotangent, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/LocalRing/RingHom/Basic.lean, line 75.
Stacks 0E8M: a local homomorphism
A → BwithBfinite overA,m_Bfinitely generated, surjective on residue fields, and surjective on cotangent spaces, is surjective.The cotangent hypothesis gives
m_A B = m_B, soB ⧸ m_A Bis the residue field ofB, and the residue hypothesis saysAalready surjects onto it. Nakayama (00DV (6)) promotes that to surjectivity ofA → B.The tag asks for an isomorphism on residue fields; surjectivity is all that is used.
theorem IsLocalRing.surjective_of_surjective_mapCotangent [Module.Finite A B]
(hmB : (maximalIdeal B).FG)
(hres : Function.Surjective (ResidueField.map (algebraMap A B)))
(hcot : Function.Surjective (Ideal.mapCotangent (maximalIdeal A) (maximalIdeal B)
(Algebra.ofId A B) (le_of_eq (maximalIdeal_comap (algebraMap A B)).symm))) :
Function.Surjective (algebraMap A B)
Sources
Section10.21 Open and closed subsets of spectra#
Section 10.21 of the Stacks Project, Tag 04PN. 3 tags here are carried by 6 declarations of the repository (all in StacksCore) and 4 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00ED, a lemma
Tag 00ED in the Stacks Project.
Declarations registered for the tag:
PrimeSpectrum.primeSpectrumProdHomeoregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 20 (StacksCore).PrimeSpectrum.sigmaToPiHomeoregistered withadd_to_stacksin StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 21 (StacksCore): “for an arbitrary finite product”.
Tag 00EF, a lemma
Tag 00EF in the Stacks Project.
PrimeSpectrum.preconnectedSpace_iff_mul_eq_zero_add_eq_one, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 72. The attribute's comment: “for a semiring, phrased with complementary pairs”.
Stacks 00EF, in its most general form. Over a semiring the statement must be phrased with complementary pairs rather than idempotents: an idempotent need not have a complement, so "every idempotent is
0or1" is strictly stronger than preconnectedness there. Mathlib's own example, onPrimeSpectrum.mulZeroAddOneEquivClopens, is the semiring{0, 0.5, 1}with⊔ = +and⊓ = *, in which0.5is idempotent and uncomplemented.Pairs
e * f = 0,e + f = 1are exactly what index the clopens ofSpec R, which is why this is the level at which the equivalence is true.
theorem preconnectedSpace_iff_mul_eq_zero_add_eq_one :
PreconnectedSpace (PrimeSpectrum R) ↔
∀ e f : R, e * f = 0 → e + f = 1 → e = 0 ∨ f = 0
PrimeSpectrum.preconnectedSpace_iff_isIdempotentElem, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 96. The attribute's comment: “without the nonzero hypothesis, for PreconnectedSpace”. References: EGA III (7.8.6.1), “affine case Z = Spec R”.
Stacks 00EF without the nonzero hypothesis. Over a ring every idempotent
ehas the complement1 - e, so the pair formulation collapses to the familiar one.This form needs no
Nontrivial R: for the zero ringSpec Ris empty, hence preconnected, and the right-hand side holds vacuously. It isConnectedSpace— which bundles nonemptiness — that forces the hypothesis, seeconnectedSpace_iff_isIdempotentElem.
theorem preconnectedSpace_iff_isIdempotentElem :
PreconnectedSpace (PrimeSpectrum R) ↔ ∀ e : R, IsIdempotentElem e → e = 0 ∨ e = 1
PrimeSpectrum.connectedSpace_iff_isIdempotentElem, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 110. References: EGA III (7.8.6.1), “special case”.
Stacks 00EF: for a nonzero ring,
Spec Ris connected if and only ifRhas no nontrivial idempotents.The
Nontrivial Rhypothesis is load-bearing and not merely inherited from the tag's wording: for the zero ring the right-hand side holds vacuously whileSpec Ris empty, soConnectedSpacefails. Dropping it would make the statement false, not weaker.
theorem connectedSpace_iff_isIdempotentElem [Nontrivial R] :
ConnectedSpace (PrimeSpectrum R) ↔ ∀ e : R, IsIdempotentElem e → e = 0 ∨ e = 1
Tag 00EH, a lemma
Tag 00EH in the Stacks Project.
IsLocalization.Away.quotient_span_singleton_of_isIdempotentElem, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Localization/Away/Lemmas.lean, line 30. The attribute's comment: “(2)”. References: SGA 3 VIIB (0.1.1), “partial”.
Stacks 00EH, clause (2), in the tag's orientation: for an idempotent
e, the quotientR ⧸ (e)is the localization ofRaway from1 - e.This is
IsLocalization.Away.quotient_of_isIdempotentElemwithereplaced by1 - e, but that substitution cannot be performed by rewriting: the offending1 - (1 - e)occurs as a type index of the quotient, sosimpand▸both fail on the motive. Going throughIsLocalization.away_of_isIdempotentEleminstead puts the kernel equation in hypothesis position, wheresimpreaches it.
theorem IsLocalization.Away.quotient_span_singleton_of_isIdempotentElem {e : R}
(he : IsIdempotentElem e) : IsLocalization.Away (1 - e) (R ⧸ Ideal.span {e})
IsLocalization.Away.quotientAlgEquiv, a def in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Localization/Away/Lemmas.lean, line 37. The attribute's comment: “(2)”.
Stacks 00EH, clause (2), as the isomorphism the tag states. Mathlib carries only the
IsLocalization.Awaypredicate, never a bundled map, so this recordsR ⧸ (e) ≅ R_{1 - e}.
noncomputable def IsLocalization.Away.quotientAlgEquiv {e : R} (he : IsIdempotentElem e) :
(R ⧸ Ideal.span {e}) ≃ₐ[R] Localization.Away (1 - e)
PrimeSpectrum.isClopen_zeroLocus_of_isIdempotentElem_of_fg, a theorem in StacksCore (human-reviewed), declared in StacksCore/RingTheory/Spectrum/Prime/Topology.lean, line 123. The attribute's comment: “(3)”.
Stacks 00EH, clause (3): the vanishing locus of a finitely generated idempotent ideal is open as well as closed.
Only one implication holds.
I.FGcannot be dropped — in a rank-one non-discrete valuation ring the maximal ideal satisfiesm * m = mwithout being finitely generated, andV(m)is closed but not open — and there is no converse: forI = (x)ink[x]/(x²)the setV(I)is all ofSpec R, hence clopen, whileI * I = 0 ≠ I.
theorem isClopen_zeroLocus_of_isIdempotentElem_of_fg {I : Ideal R} (hfg : I.FG)
(h : IsIdempotentElem I) : IsClopen (zeroLocus (I : Set R))
Declarations registered for the tag:
Ideal.isIdempotentElem_iff_of_fgregistered withadd_to_stacksin StacksCore/RingTheory/Ideal/IdempotentFG.lean, line 12 (StacksCore): “(1)”.IsLocalization.Away.quotient_of_isIdempotentElemregistered withadd_to_stacksin StacksCore/RingTheory/Localization/Away/Lemmas.lean, line 15 (StacksCore): “(2)”. References: SGA 3 VIIB (0.1.1), “partial”.
Sources
Section10.22 Connected components of spectra#
Section 10.22 of the Stacks Project, Tag 00EB. 2 tags here are carried by 2 declarations of the repository (all in StacksFrontier), quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 04PP, a lemma
Tag 04PP in the Stacks Project.
PrimeSpectrum.isClosed_and_biUnion_connectedComponent_eq_tfae, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Spectrum/Prime/ConnectedComponents.lean, line 288.
Let
Rbe a commutative ring andT ⊆ Spec R. The following are equivalent:Tis closed and a union of connected components ofSpec R;Tis an intersection of open and closed subsets ofSpec R;T = V Ifor some idealIgenerated by idempotents; there is a unique such idealI; andTis the zero locus of the ideal generated by all idempotents vanishing onT.
theorem isClosed_and_biUnion_connectedComponent_eq_tfae (T : Set (PrimeSpectrum R)) :
[IsClosed T ∧ (⋃ x ∈ T, connectedComponent x) = T,
∃ S : Set (Set (PrimeSpectrum R)), (∀ U ∈ S, IsClopen U) ∧ T = ⋂₀ S,
∃ I : Ideal R, (∃ s : Set R, (∀ e ∈ s, IsIdempotentElem e) ∧ I = Ideal.span s) ∧
T = zeroLocus (I : Set R),
∃! I : Ideal R, (∃ s : Set R, (∀ e ∈ s, IsIdempotentElem e) ∧ I = Ideal.span s) ∧
T = zeroLocus (I : Set R),
T = zeroLocus
(Ideal.span {e : R | IsIdempotentElem e ∧ T ⊆ zeroLocus {e}} : Set R)].TFAE
Tag 00EG, a lemma
Tag 00EG in the Stacks Project.
PrimeSpectrum.exists_connectedComponent_eq_zeroLocus_span_isIdempotentElem, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/Spectrum/Prime/ConnectedComponents.lean, line 354.
Stacks Tag 00EG. For any commutative ring
Rand any pointxofSpec R, the connected component ofxisV(I)for an idealIgenerated by idempotents such that every idempotent ofRmaps to0or1inR/I.
theorem PrimeSpectrum.exists_connectedComponent_eq_zeroLocus_span_isIdempotentElem
(x : PrimeSpectrum R) :
∃ I : Ideal R,
connectedComponent x = PrimeSpectrum.zeroLocus (I : Set R) ∧
I = Ideal.span {e : R | e ∈ I ∧ IsIdempotentElem e} ∧
∀ e : R, IsIdempotentElem e →
(Ideal.Quotient.mk I e = 0 ∨ Ideal.Quotient.mk I e = 1)
Sources
Section10.23 Glueing properties#
Section 10.23 of the Stacks Project, Tag 00EN. 3 tags here are carried by 8 declarations of the repository (all in StacksFrontier) and 15 registered declarations, quoted below from AxiomMath/Stacks at commit 5ed82d14.
Tag 00HN, a lemma
Tag 00HN in the Stacks Project.
Declarations registered for the tag:
Module.eq_zero_of_localization_maximalregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 171 (StacksFrontier): “(1) (c) => (a)”. References: EGA 0 (1.7.1), “partial”; SGA 3 V (4.1.3), “more general”.Module.subsingleton_of_localization_maximalregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 172 (StacksFrontier): “(2) (c) => (a)”.Module.support_eq_empty_iffregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 173 (StacksFrontier): “(2) (a) <=> (b)”. References: EGA 0 (1.7.1), “M = 0 ⇔ Supp M = ∅”.IsLocalizedModule.subsingleton_of_subsingletonregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 174 (StacksFrontier): “(2) (a) => (b)”.exact_of_localized_maximalregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 175 (StacksFrontier): “(3) (c) => (a)”.exact_of_isLocalized_maximalregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 176 (StacksFrontier): “(3) (c) => (a), IsLocalizedModule form”.IsLocalizedModule.map_exactregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 177 (StacksFrontier): “(3) (a) => (b)”. References: EGA 0 (1.3.2), “more general”; EGA 0 (6.3.1), “more general”.injective_of_localized_maximalregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 178 (StacksFrontier): “(4) (c) => (a)”. References: EGA 0 (6.3.3), “more general”.LocalizedModule.map_injectiveregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 179 (StacksFrontier): “(4) (a) => (b)”. References: EGA 0 (1.3.2), “more general”.surjective_of_localized_maximalregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 180 (StacksFrontier): “(5) (c) => (a)”. References: SGA 3 V (4.1.3), “more general”.LocalizedModule.map_surjectiveregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 181 (StacksFrontier): “(5) (a) => (b)”. References: EGA 0 (1.3.2), “more general”.bijective_of_localized_maximalregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 182 (StacksFrontier): “(6) (c) => (a)”.Ideal.IsMaximal.isPrimeregistered withadd_to_stacksin StacksFrontier/MathlibRegistrations/Ch10.lean, line 183 (StacksFrontier): “(b) => (c), maximal ideals are prime”.
Tag 00EO, a lemma
Tag 00EO in the Stacks Project.
Module.subsingleton_of_localizationSpan_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 60. The attribute's comment: “(1)”.
Stacks 00EO (1). If each canonical localisation
LocalizedModule (powers (f i)) Mis the zero module and thef igenerate the unit ideal, thenMitself is the zero module.
theorem Module.subsingleton_of_localizationSpan_range
{R : Type*} [CommSemiring R] {M : Type*} [AddCommMonoid M] [Module R M]
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(h : ∀ i, Subsingleton (LocalizedModule (Submonoid.powers (f i)) M)) :
Subsingleton M
Module.Finite.of_localizationSpan_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 73. The attribute's comment: “(2)”. References: SGA 4½ Arcata (1.4.2), “(ii) fin type, Zariski”.
Stacks 00EO (2). If each canonical localisation
M_{f i}is finite overR_{f i}and thef igenerate the unit ideal, thenMis a finiteR-module.
theorem Module.Finite.of_localizationSpan_range
{R : Type*} [CommSemiring R] {M : Type*} [AddCommMonoid M] [Module R M]
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(h : ∀ i, Module.Finite (Localization.Away (f i))
(LocalizedModule (Submonoid.powers (f i)) M)) :
Module.Finite R M
bijective_of_localized_span_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 86. The attribute's comment: “(4)”.
Stacks 00EO (4). If
φ : M →ₗ[R] Nis bijective after canonical localisation at eachf iand thef igenerate the unit ideal, thenφis bijective.
theorem bijective_of_localized_span_range
{R : Type*} [CommSemiring R]
{M N : Type*} [AddCommMonoid M] [Module R M] [AddCommMonoid N] [Module R N]
(φ : M →ₗ[R] N)
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(hiso : ∀ i, Function.Bijective
(LocalizedModule.map (Submonoid.powers (f i)) φ)) :
Function.Bijective φ
shortExact_of_localized_span_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 101. The attribute's comment: “(5)”.
Stacks 00EO (5). Let
g : M'' →ₗ[R] Mandh : M →ₗ[R] M'be linear maps. If0 → M''_{f i} → M_{f i} → M'_{f i} → 0is exact for eachiand thef igenerate the unit ideal, then0 → M'' → M → M' → 0is exact.
theorem shortExact_of_localized_span_range
{R : Type*} [CommSemiring R]
{M'' M M' : Type*}
[AddCommMonoid M''] [Module R M'']
[AddCommMonoid M] [Module R M]
[AddCommMonoid M'] [Module R M']
(g : M'' →ₗ[R] M) (h : M →ₗ[R] M')
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(hexact : ∀ i,
Function.Injective (LocalizedModule.map (Submonoid.powers (f i)) g) ∧
Function.Exact (LocalizedModule.map (Submonoid.powers (f i)) g)
(LocalizedModule.map (Submonoid.powers (f i)) h) ∧
Function.Surjective (LocalizedModule.map (Submonoid.powers (f i)) h)) :
Function.Injective g ∧ Function.Exact g h ∧ Function.Surjective h
IsNoetherianRing.of_localizationSpan_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 123. The attribute's comment: “(6)”.
Stacks 00EO (6). If each canonical
R_{f i} = Localization.Away (f i)is Noetherian and thef igenerate the unit ideal, thenRis Noetherian.
theorem IsNoetherianRing.of_localizationSpan_range
{R : Type*} [CommSemiring R]
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(h : ∀ i, IsNoetherianRing (Localization.Away (f i))) :
IsNoetherianRing R
Algebra.FiniteType.of_localizationSpan_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 140. The attribute's comment: “(7)”.
Stacks 00EO (7). If each canonical
S_{f i}is a finite-typeR_{f i}-algebra and thef igenerate the unit ideal, thenSis a finite-typeR-algebra.
theorem Algebra.FiniteType.of_localizationSpan_range
{R : Type*} [CommRing R] {S : Type*} [CommRing S] [Algebra R S]
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(h : ∀ i, (Localization.awayMap (algebraMap R S) (f i)).FiniteType) :
Algebra.FiniteType R S
Algebra.FinitePresentation.of_localizationSpan_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 164. The attribute's comment: “(8)”.
Stacks 00EO (8). If each canonical
S_{f i}is of finite presentation overR_{f i}and thef igenerate the unit ideal, thenSis a finitely presentedR-algebra.
theorem Algebra.FinitePresentation.of_localizationSpan_range
{R : Type u} [CommRing R] {S : Type u} [CommRing S] [Algebra R S]
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(h : ∀ i, letI : Algebra (Localization.Away (f i))
(Localization.Away (algebraMap R S (f i))) :=
(IsLocalization.Away.map (Localization.Away (f i))
(Localization.Away (algebraMap R S (f i)))
(algebraMap R S) (f i)).toAlgebra
Algebra.FinitePresentation (Localization.Away (f i))
(Localization.Away (algebraMap R S (f i)))) :
Algebra.FinitePresentation R S
Module.FinitePresentation.of_localizationSpan_range, a theorem in StacksFrontier (drafted, not yet reviewed), declared in StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 183. The attribute's comment: “(3)”. References: SGA 4½ Arcata (1.4.2), “(ii) fin pres, Zariski”.
Stacks 00EO (3). If each canonical localisation
M_{f i}is finitely presented overR_{f i}and thef igenerate the unit ideal, thenMis finitely presented overR.
theorem Module.FinitePresentation.of_localizationSpan_range
{R : Type*} [CommRing R] {M : Type*} [AddCommGroup M] [Module R M]
{ι : Type*} (f : ι → R)
(hf : Ideal.span (Set.range f) = ⊤)
(h : ∀ i, Module.FinitePresentation (Localization.Away (f i))
(LocalizedModule (Submonoid.powers (f i)) M)) :
Module.FinitePresentation R M
Tag 00EP, a lemma
Tag 00EP in the Stacks Project.
Declarations registered for the tag:
Algebra.FiniteType.of_span_eq_top_targetregistered withadd_to_stacksin StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 202 (StacksFrontier): “(1)”. References: SGA 4 IV (8.5.5), “special case”.Algebra.FinitePresentation.of_span_eq_top_targetregistered withadd_to_stacksin StacksFrontier/RingTheory/LocalProperties/StandardCover.lean, line 204 (StacksFrontier): “(2)”. References: SGA 4 IV (8.5.5), “special case”.
Sources
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.