ModuleExists_mul_eq_hochschild_coboundary_of_discr_ne_zero.lean
Nyll.AlgebraicCurves.Geometry.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
31 declarations indexed from sourceView source ↗ Module documentation
Exists mul eq hochschild coboundary of discr ne zero
Declarations
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.cst
DocumentationThe product of coordinate vectors determined by structure constants.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.cst_apply
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.sum3_rot
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.sum4_rot
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.cst_cst_left
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.cst_cst_right
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.cst_comm_of
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.cst_single_left
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.cst_single_single
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.D1
DocumentationThe Hochschild coboundary of a linear cochain in coordinates given by the multiplication constants.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.D2
DocumentationThe Hochschild coboundary of a bilinear cochain in multiplication coordinates.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.D1_smul
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.D1_neg
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.D1_map
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.D2_map
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.hd2_expand
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Coord
variable {R : Type*} [CommRing R] {N : ℕ}
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.repr_sum_smul
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.repr_basis_eq_single
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.repr_mul
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
include hγL in
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.Ψf
DocumentationThe bilinear operation obtained by evaluating the specified coefficients in the chosen basis.
Source context 9 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.Ψf_repr
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.Ψf_add_left
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.Ψf_smul_left
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.Ψf_symm
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.ΨL
DocumentationThe symmetric bilinear map determined by the specified coefficients and basis.
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.ΨL_apply
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.ΨL_one
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.ΨL_coc
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
include hγL in
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.key
Source context 11 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Based
variable {L : Type*} [Field L] {F : Type*} [CommRing F] [Algebra L F] {N : ℕ}
(bF : Module.Basis (Fin (N + 1)) L F)
(γL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
(hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m)
variable (ψL : Fin (N + 1) → Fin (N + 1) → Fin (N + 1) → L)
include hγL in
AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero.GenH2Sol.main
Source context 10 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v
noncomputable section
namespace GenH2Sol
section Main
attribute [local instance] FractionRing.liftAlgebra FractionRing.isScalarTower_liftAlgebra
variable {K : Type u} [Field K] {n : ℕ} {B : Type v} [CommRing B] [IsDomain B] [IsIntegrallyClosed
B]
[Algebra K[X] B]
Lean source · full declarationtheorem main (b : Module.Basis (Fin (n + 1)) K[X] B) (hb0 : b 0 = 1)
(hdisc : Algebra.discr K[X] b ≠ 0)
(ψ : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → K[X])
(hψ1 : ∀ j k, ψ 0 j k = 0) (hψc : ∀ i j k, ψ i j k = ψ j i k)
(hψa : ∀ i j l m, D2 (fun i j k => b.repr (b i * b j) k) ψ i j l m = 0) :
∃ u : K[X], u ≠ 0 ∧ ∃ lam : Fin (n + 1) → Fin (n + 1) → K[X], (∀ m, lam 0 m = 0) ∧
∀ i j m, u * ψ i j m = D1 (fun i j k => b.repr (b i * b j) k) lam i j m := by
classical
let L := FractionRing K[X]
let F := FractionRing B
let _ : Module.Finite K[X] B := Module.Finite.of_basis b
let _ : Module.Free K[X] B := Module.Free.of_basis b
have hinjB : Function.Injective (algebraMap K[X] B) := by
intro f g hfg
have h1 : ∀ f : K[X], b.repr (algebraMap K[X] B f) 0 = f := fun f => by
rw [Algebra.algebraMap_eq_smul_one, ← hb0, map_smul, b.repr_self, Finsupp.smul_apply,
Finsupp.single_eq_same, smul_eq_mul, mul_one]
rw [← h1 f, ← h1 g, hfg]
let _ : FaithfulSMul K[X] B := (faithfulSMul_iff_algebraMap_injective K[X] B).2 hinjB
let _ : Algebra.IsIntegral K[X] B := inferInstance
let _ : IsIntegralClosure B K[X] F := IsIntegralClosure.of_isIntegrallyClosed B K[X] F
let _ : Algebra.IsAlgebraic L F := isAlgebraic_of_isFractionRing (R := K[X]) (S := B) L F
let _ : IsLocalization (Algebra.algebraMapSubmonoid B K[X]⁰) F :=
IsIntegralClosure.isLocalization K[X] L F B
let bF : Module.Basis (Fin (n + 1)) L F := b.localizationLocalization L K[X]⁰ F
have hbF : ∀ i, bF i = algebraMap B F (b i) := fun i =>
Module.Basis.localizationLocalization_apply L K[X]⁰ F b i
have hbFrepr : ∀ (x : B) (i : Fin (n + 1)), bF.repr (algebraMap B F x) i =
algebraMap K[X] L (b.repr x i) := fun x i =>
Module.Basis.localizationLocalization_repr_algebraMap L K[X]⁰ F b x i
let _ : FiniteDimensional L F := Module.Finite.of_basis bF
have hdiscL : Algebra.discr L bF ≠ 0 := by
rw [Algebra.discr_localizationLocalization K[X] K[X]⁰ F b]
exact fun h => hdisc ((IsFractionRing.injective K[X] L) (by rw [h, map_zero]))
have hnondeg : (Algebra.traceForm L F).Nondegenerate := by
apply LinearMap.BilinForm.nondegenerate_of_det_ne_zero (Algebra.traceForm L F) bF
rw [← Algebra.traceMatrix_of_basis, ← Algebra.discr_def]
exact hdiscL
let _ : Algebra.IsSeparable L F := ((traceForm_nondegenerate_tfae L F).out 1 3).2 hnondeg
let _ : Algebra.FormallyEtale L F := Algebra.FormallyEtale.of_isSeparable L F
let γL : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → L := fun i j k =>
algebraMap K[X] L (b.repr (b i * b j) k)
let ψL : Fin (n + 1) → Fin (n + 1) → Fin (n + 1) → L := fun i j k => algebraMap K[X] L (ψ i j k)
have hγL : ∀ i j m, bF.repr (bF i * bF j) m = γL i j m := fun i j m => by
rw [hbF, hbF, ← map_mul, hbFrepr]
have hγLc : ∀ i j k, γL i j k = γL j i k := fun i j k => by
change algebraMap K[X] L (b.repr (b i * b j) k) = algebraMap K[X] L (b.repr (b j * b i) k)
rw [mul_comm]
have hψLc : ∀ i j k, ψL i j k = ψL j i k := fun i j k => by
change algebraMap K[X] L (ψ i j k) = algebraMap K[X] L (ψ j i k)
rw [hψc]
have hψL1 : ∀ j k, ψL 0 j k = 0 := fun j k => by
change algebraMap K[X] L (ψ 0 j k) = 0
rw [hψ1, map_zero]
have hD2L : ∀ i j l m, D2 γL ψL i j l m = 0 := fun i j l m => by
have := congrArg (algebraMap K[X] L) (hψa i j l m)
rw [D2_map, map_zero] at this
exact this
have hbF0 : bF 0 = 1 := by rw [hbF, hb0, map_one]
obtain ⟨l, hl1, hl⟩ :=
Algebra.FormallySmooth.exists_linearMap_eq_of_symmetric_hochschild_two_cocycle L F F
(ΨL bF ψL hψLc) (fun x y => by rw [ΨL_apply, ΨL_apply, Ψf_symm bF ψL hψLc])
(ΨL_one bF ψL hψLc hbF0 hψL1) (ΨL_coc bF γL hγL ψL hψLc hγLc hD2L)
have hkey := key bF γL hγL ψL hψLc hγLc l hl
set lamL : Fin (n + 1) → Fin (n + 1) → L := fun i m => bF.repr (l (bF i)) m with hlamLdef
have hlamL0 : ∀ m, lamL 0 m = 0 := fun m => by
change bF.repr (l (bF 0)) m = 0
rw [hbF0, hl1, map_zero, Finsupp.zero_apply]
obtain ⟨u, hu⟩ := IsLocalization.exist_integer_multiples_of_finite K[X]⁰
(fun p : Fin (n + 1) × Fin (n + 1) => -lamL p.1 p.2)
choose lamf hlamf using fun p : Fin (n + 1) × Fin (n + 1) => hu p
let lam : Fin (n + 1) → Fin (n + 1) → K[X] := fun i m => lamf (i, m)
have hlam : ∀ i m, algebraMap K[X] L (lam i m) = (u : K[X]) • (-lamL i m) := fun i m =>
hlamf (i, m)
have hu0 : (u : K[X]) ≠ 0 := nonZeroDivisors.coe_ne_zero u
refine ⟨u, hu0, lam, fun m => ?_, fun i j m => ?_⟩
· apply IsFractionRing.injective K[X] L
rw [hlam, hlamL0, neg_zero, smul_zero, map_zero]
· apply IsFractionRing.injective K[X] L
rw [map_mul, D1_map]
have hlam' : (fun i m => algebraMap K[X] L (lam i m)) = ((algebraMap K[X] L u) • (-lamL)) := by
funext i m
rw [hlam, Pi.smul_apply, Pi.smul_apply, Pi.neg_apply, Pi.neg_apply, Algebra.smul_def,
smul_eq_mul]
rw [hlam', D1_smul, D1_neg]
change algebraMap K[X] L u * ψL i j m = _
rw [hkey i j m]
AlgebraicCurve.exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Proofs.Exists_mul_eq_hochschild_coboundary_of_discr_ne_zero
open Polynomial
open scoped nonZeroDivisors
universe u v