ModuleModule_IsDirectLimit_exists_linearEquiv_of_finitePresentation.lean
Nyll.AlgebraicCurves.Foundations.Algebra.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
26 declarations indexed from sourceView source ↗ Module documentation
Descend a finitely presented module to a stage of a direct limit.
Imports18
- Mathlib.Algebra.Module.FinitePresentation
- Mathlib.RingTheory.PicardGroup
- Mathlib.Algebra.Colimit.Module
- Mathlib.LinearAlgebra.TensorProduct.DirectLimit
- Mathlib.LinearAlgebra.TensorProduct.Map
- Mathlib.LinearAlgebra.TensorProduct.RightExactness
- Mathlib.LinearAlgebra.TensorProduct.Pi
- Mathlib.LinearAlgebra.TensorProduct.Quotient
- Mathlib.LinearAlgebra.TensorProduct.Tower
- Mathlib.RingTheory.TensorProduct.Basic
- Mathlib.RingTheory.TensorProduct.Finite
- Mathlib.RingTheory.Finiteness.Defs
- Mathlib.RingTheory.Finiteness.Basic
- Mathlib.LinearAlgebra.Finsupp.LinearCombination
- Mathlib.LinearAlgebra.Pi
- Mathlib.Data.Finset.Order
- Mathlib.Order.DirectedInverseSystem
- Mathlib.Tactic.Choose
Imported by2
Declarations
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.rTensor_algHom_smul
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Helpers
variable {R : Type*} [CommRing R] {S T : Type*} [CommRing S] [CommRing T] [Algebra R S] [Algebra
R T]
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.ext_one_tmul
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Helpers
variable {R : Type*} [CommRing R] {S T : Type*} [CommRing S] [CommRing T] [Algebra R S] [Algebra
R T]
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.rTensor_comp_apply_tmul
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Helpers
variable {R : Type*} [CommRing R] {S T : Type*} [CommRing S] [CommRing T] [Algebra R S] [Algebra
R T]
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.comp_rTensor_apply_tmul
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Helpers
variable {R : Type*} [CommRing R] {S T : Type*} [CommRing S] [CommRing T] [Algebra R S] [Algebra
R T]
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.rTensor_liftBaseChange_tmul
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Helpers
variable {R : Type*} [CommRing R] {S T : Type*} [CommRing S] [CommRing T] [Algebra R S] [Algebra
R T]
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.finitePresentation_tensorProduct
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Helpers
variable {R : Type*} [CommRing R] {S T : Type*} [CommRing S] [CommRing T] [Algebra R S] [Algebra
R T]
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.exists_ge_ge
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Cocone
variable {R : Type*} [CommRing R] {ι : Type*} [Preorder ι] [Nonempty ι] [IsDirectedOrder ι]
{G : ι → Type*} [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
(t : ∀ i j, i ≤ j → G i →ₗ[R] G j)
{A : Type*} [AddCommGroup A] [Module R A] (ψ : ∀ i, G i →ₗ[R] A)
omit [Nonempty ι] in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.cocone_rTensor_surj
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Cocone
variable {R : Type*} [CommRing R] {ι : Type*} [Preorder ι] [Nonempty ι] [IsDirectedOrder ι]
{G : ι → Type*} [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
(t : ∀ i j, i ≤ j → G i →ₗ[R] G j)
{A : Type*} [AddCommGroup A] [Module R A] (ψ : ∀ i, G i →ₗ[R] A)
omit [Nonempty ι] in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.lift_bijective
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Cocone
variable {R : Type*} [CommRing R] {ι : Type*} [Preorder ι] [Nonempty ι] [IsDirectedOrder ι]
{G : ι → Type*} [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
(t : ∀ i j, i ≤ j → G i →ₗ[R] G j)
{A : Type*} [AddCommGroup A] [Module R A] (ψ : ∀ i, G i →ₗ[R] A)
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.cocone_rTensor_zero
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Cocone
variable {R : Type*} [CommRing R] {ι : Type*} [Preorder ι] [Nonempty ι] [IsDirectedOrder ι]
{G : ι → Type*} [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
(t : ∀ i j, i ≤ j → G i →ₗ[R] G j)
{A : Type*} [AddCommGroup A] [Module R A] (ψ : ∀ i, G i →ₗ[R] A)
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.exists_comp_eq_of_finite
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Cocone
variable {R : Type*} [CommRing R] {ι : Type*} [Preorder ι] [Nonempty ι] [IsDirectedOrder ι]
{G : ι → Type*} [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
(t : ∀ i j, i ≤ j → G i →ₗ[R] G j)
{A : Type*} [AddCommGroup A] [Module R A] (ψ : ∀ i, G i →ₗ[R] A)
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.exists_factor_of_finitePresentation
Source context 7 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Cocone
variable {R : Type*} [CommRing R] {ι : Type*} [Preorder ι] [Nonempty ι] [IsDirectedOrder ι]
{G : ι → Type*} [∀ i, AddCommGroup (G i)] [∀ i, Module R (G i)]
(t : ∀ i j, i ≤ j → G i →ₗ[R] G j)
{A : Type*} [AddCommGroup A] [Module R A] (ψ : ∀ i, G i →ₗ[R] A)
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.directedSystem_linear
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
omit [IsDirectedOrder ι] [Nonempty ι] in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.rTensor_self
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
omit [IsDirectedOrder ι] [Nonempty ι] in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.glin_comp
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
omit [DirectedSystem B (fun i j h => τ i j h)] [IsDirectedOrder ι] [Nonempty ι] in
include hg in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.glin_compat
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
omit [DirectedSystem B (fun i j h => τ i j h)] [IsDirectedOrder ι] [Nonempty ι] in
include hg in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.gQ_compat
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
omit [DirectedSystem B (fun i j h => τ i j h)] [IsDirectedOrder ι] [Nonempty ι] in
include hg in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.gQ_surj
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
include hg hsurj in
omit [DirectedSystem B (fun i j h => τ i j h)] in
omit [Nonempty ι] in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.gQ_zero
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
include hg hsurj hzero in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.hom_inj
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
include hg hsurj hzero in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.hom_surj
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
include hg hsurj hzero in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.iso_desc
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
include hg hsurj hzero in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.obj
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
omit [DirectedSystem B (fun i j h => τ i j h)] in
include hg hsurj in
Lean source · full declarationtheorem obj (Y : Type w) [AddCommGroup Y] [Module Bω Y] [Module.FinitePresentation Bω Y] :
∃ (i : ι) (Pᵢ : Type u) (_ : AddCommGroup Pᵢ) (_ : Module (B i) Pᵢ),
Module.FinitePresentation (B i) Pᵢ ∧
Nonempty (letI := (g i).toRingHom.toAlgebra; Bω ⊗[B i] Pᵢ ≃ₗ[Bω] Y) := by
classical
obtain ⟨n, K, e, hK⟩ := Module.FinitePresentation.exists_fin Bω Y
obtain ⟨m, v, hv⟩ := Submodule.fg_iff_exists_fin_generating_family.mp hK
choose i₀ x₀ hx₀ using fun a : Fin m × Fin n => hsurj (v a.1 a.2)
obtain ⟨i, hi⟩ := Finset.exists_le (Finset.univ.image i₀)
have hle : ∀ a, i₀ a ≤ i := fun a => hi _ (Finset.mem_image_of_mem _ (Finset.mem_univ a))
let y : Fin m → (Fin n → B i) := fun a k => τ (i₀ (a, k)) i (hle _) (x₀ (a, k))
have hy : ∀ a k, g i (y a k) = v a k := fun a k => by
simp only [y]
rw [← AlgHom.comp_apply, hg]
exact hx₀ (a, k)
let Kᵢ : Submodule (B i) (Fin n → B i) := Submodule.span (B i) (Set.range y)
let : Algebra (B i) Bω := (g i).toRingHom.toAlgebra
have halg : ∀ b : B i, algebraMap (B i) Bω b = g i b := fun b => rfl
refine ⟨i, (Fin n → B i) ⧸ Kᵢ, inferInstance, inferInstance, ?_, ⟨?_⟩⟩
· exact Module.finitePresentation_of_surjective Kᵢ.mkQ (Submodule.mkQ_surjective Kᵢ)
(by rw [Submodule.ker_mkQ]; exact Submodule.fg_span (Set.finite_range y))
· let π := TensorProduct.piScalarRight (B i) Bω Bω (Fin n)
refine TensorProduct.AlgebraTensorModule.tensorQuotientEquiv Bω (B i) Bω Kᵢ ≪≫ₗ
Submodule.Quotient.equiv _ K π ?_ ≪≫ₗ e.symm
apply le_antisymm
· rintro _ ⟨x, ⟨w, rfl⟩, rfl⟩
induction w using TensorProduct.inductionOn with
| add w₁ w₂ h₁ h₂ => simpa only [map_add] using add_mem h₁ h₂
| tmul b k =>
obtain ⟨k, hk⟩ := k
simp only [TensorProduct.AlgebraTensorModule.lTensor_tmul, LinearMap.restrictScalars_apply,
Submodule.subtype_apply, LinearEquiv.coe_coe, π, TensorProduct.piScalarRight_apply,
TensorProduct.piScalarRightHom_tmul]
induction hk using Submodule.span_induction generalizing b with
| mem z hz =>
obtain ⟨a, rfl⟩ := hz
have : (fun j => y a j • b) = b • v a := by
funext j
simp [Algebra.smul_def, halg, hy, mul_comm]
rw [this, ← hv]
exact Submodule.smul_mem _ _ (Submodule.subset_span ⟨a, rfl⟩)
| zero =>
simp only [Pi.zero_apply, zero_smul]
exact zero_mem K
| add z₁ z₂ _ _ h₁ h₂ =>
have : (fun j => (z₁ + z₂) j • b) = (fun j => z₁ j • b) + (fun j => z₂ j • b) := by
funext j
simp [add_smul]
rw [this]
exact add_mem (h₁ b) (h₂ b)
| smul c z _ hz =>
have : (fun j => (c • z) j • b) = fun j => z j • (c • b) := by
funext j
simp [mul_comm c, mul_smul]
rw [this]
exact hz _
· rw [← hv, Submodule.span_le]
rintro _ ⟨a, rfl⟩
refine ⟨(1 : Bω) ⊗ₜ y a, ⟨(1 : Bω) ⊗ₜ ⟨y a, Submodule.subset_span ⟨a, rfl⟩⟩, rfl⟩, ?_⟩
simp only [LinearEquiv.coe_coe, π, TensorProduct.piScalarRight_apply,
TensorProduct.piScalarRightHom_tmul]
funext j
simp [Algebra.smul_def, halg, hy]
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.iso_desc_stage
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
omit [Nonempty ι] in
include hg hsurj hzero in
AlgebraicCurves.Foundations.Algebra.Proofs.Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation.S17LFP.inv_desc
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
namespace S17LFP
section Descent
universe u v w
variable {ι : Type v} [Preorder ι] [IsDirectedOrder ι] [Nonempty ι]
{B₀ : Type u} [CommRing B₀]
(B : ι → Type u) [∀ i, CommRing (B i)] [∀ i, Algebra B₀ (B i)]
(τ : ∀ i j, i ≤ j → B i →ₐ[B₀] B j) [DirectedSystem B (fun i j h => τ i j h)]
(Bω : Type u) [CommRing Bω] [Algebra B₀ Bω] (g : ∀ i, B i →ₐ[B₀] Bω)
(hg : ∀ i j (h : i ≤ j), (g j).comp (τ i j h) = g i)
(hsurj : ∀ b : Bω, ∃ i x, g i x = b)
(hzero : ∀ i (x : B i), g i x = 0 → ∃ (j : ι) (h : i ≤ j), τ i j h x = 0)
(P Q : Type*) [AddCommGroup P] [Module B₀ P] [AddCommGroup Q] [Module B₀ Q]
include hg hsurj hzero in
Module.IsDirectLimit.exists_linearEquiv_of_finitePresentation
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_IsDirectLimit_exists_linearEquiv_of_finitePresentation
open TensorProduct
universe u v w