Module

Module_Invertible_of_projective_of_forall_finrank_eq_one.lean

Nyll.AlgebraicCurves.Foundations.Algebra.Module_Invertible_of_projective_of_forall_finrank_eq_one
7 declarations indexed from sourceView source ↗

Invertibility of projective modules of rank one

Shows that a finite projective module with one-dimensional fibers is invertible.

Declarations

AlgebraicCurves.Foundations.Algebra.Proofs.Module_Invertible_of_projective_of_forall_finrank_eq_one.Module.Invertible.RankOneAux.mul_comm_of_equiv
Source context 12 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_Invertible_of_projective_of_forall_finrank_eq_one
universe u v
open TensorProduct
namespace Module
open _root_.Module
namespace Invertible
namespace RankOneAux
open _root_.Module.Invertible
open _root_.Module
variable {A : Type u} [CommRing A] {P : Type v} [AddCommGroup P] [Module A P]
lemma mul_comm_of_equiv {B : Type*} [CommRing B] {L : Type*} [AddCommGroup L] [Module B L]
    (e : B ≃ₗ[B] L) (f g : Module.Dual B L) (l l' : L) : f l * g l' = f l' * g l
AlgebraicCurves.Foundations.Algebra.Proofs.Module_Invertible_of_projective_of_forall_finrank_eq_one.Module.Invertible.RankOneAux.finrank_localization_eq_one
Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_Invertible_of_projective_of_forall_finrank_eq_one
universe u v
open TensorProduct
namespace Module
open _root_.Module
namespace Invertible
namespace RankOneAux
open _root_.Module.Invertible
open _root_.Module
variable {A : Type u} [CommRing A] {P : Type v} [AddCommGroup P] [Module A P]
variable [Module.Finite A P] [Module.Projective A P]
  (h : ∀ (K : Type u) [Field K] [Algebra A K], Module.finrank K (TensorProduct A K P) = 1)
include h in
lemma finrank_localization_eq_one (m : Ideal A) [m.IsMaximal] :
    Module.finrank (Localization.AtPrime m) (Localization.AtPrime m ⊗[A] P) = 1
AlgebraicCurves.Foundations.Algebra.Proofs.Module_Invertible_of_projective_of_forall_finrank_eq_one.Module.Invertible.RankOneAux.apply_mul_apply_comm
Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_Invertible_of_projective_of_forall_finrank_eq_one
universe u v
open TensorProduct
namespace Module
open _root_.Module
namespace Invertible
namespace RankOneAux
open _root_.Module.Invertible
open _root_.Module
variable {A : Type u} [CommRing A] {P : Type v} [AddCommGroup P] [Module A P]
variable [Module.Finite A P] [Module.Projective A P]
  (h : ∀ (K : Type u) [Field K] [Algebra A K], Module.finrank K (TensorProduct A K P) = 1)
include h in
lemma apply_mul_apply_comm (φ ψ : Module.Dual A P) (p q : P) : φ p * ψ q = φ q * ψ p
AlgebraicCurves.Foundations.Algebra.Proofs.Module_Invertible_of_projective_of_forall_finrank_eq_one.Module.Invertible.RankOneAux.exists_dualBasis
Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_Invertible_of_projective_of_forall_finrank_eq_one
universe u v
open TensorProduct
namespace Module
open _root_.Module
namespace Invertible
namespace RankOneAux
open _root_.Module.Invertible
open _root_.Module
variable {A : Type u} [CommRing A] {P : Type v} [AddCommGroup P] [Module A P]
variable [Module.Finite A P] [Module.Projective A P]
  (h : ∀ (K : Type u) [Field K] [Algebra A K], Module.finrank K (TensorProduct A K P) = 1)
omit h in
lemma exists_dualBasis :
    ∃ (n : ℕ) (x : Fin n → P) (φ : Fin n → Module.Dual A P), ∀ p : P, ∑ i, φ i p • x i = p
AlgebraicCurves.Foundations.Algebra.Proofs.Module_Invertible_of_projective_of_forall_finrank_eq_one.Module.Invertible.RankOneAux.surjective_contractLeft
Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_Invertible_of_projective_of_forall_finrank_eq_one
universe u v
open TensorProduct
namespace Module
open _root_.Module
namespace Invertible
namespace RankOneAux
open _root_.Module.Invertible
open _root_.Module
variable {A : Type u} [CommRing A] {P : Type v} [AddCommGroup P] [Module A P]
variable [Module.Finite A P] [Module.Projective A P]
  (h : ∀ (K : Type u) [Field K] [Algebra A K], Module.finrank K (TensorProduct A K P) = 1)
include h in
lemma surjective_contractLeft : Function.Surjective (contractLeft A P)
AlgebraicCurves.Foundations.Algebra.Proofs.Module_Invertible_of_projective_of_forall_finrank_eq_one.Module.Invertible.RankOneAux.injective_contractLeft
Source context 14 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_Invertible_of_projective_of_forall_finrank_eq_one
universe u v
open TensorProduct
namespace Module
open _root_.Module
namespace Invertible
namespace RankOneAux
open _root_.Module.Invertible
open _root_.Module
variable {A : Type u} [CommRing A] {P : Type v} [AddCommGroup P] [Module A P]
variable [Module.Finite A P] [Module.Projective A P]
  (h : ∀ (K : Type u) [Field K] [Algebra A K], Module.finrank K (TensorProduct A K P) = 1)
include h in
lemma injective_contractLeft : Function.Injective (contractLeft A P)
Module.Invertible.of_projective_of_forall_finrank_eq_one
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

section ProofImplementation
namespace AlgebraicCurves.Foundations.Algebra.Proofs
namespace Module_Invertible_of_projective_of_forall_finrank_eq_one
universe u v
open TensorProduct
theorem _root_.Module.Invertible.of_projective_of_forall_finrank_eq_one
    {A : Type u} [CommRing A] (P : Type v) [AddCommGroup P] [Module A P]
    [Module.Finite A P] [Module.Projective A P]
    (h : ∀ (K : Type u) [Field K] [Algebra A K], Module.finrank K (TensorProduct A K P) = 1) :
    Module.Invertible A P