Module

Discr_ne_zero_of_normalForm_split.lean

Nyll.AlgebraicCurves.FunctionFields.Discr_ne_zero_of_normalForm_split
3 declarations indexed from sourceView source ↗

Discr ne zero of normal Form split

Imports32
  • Mathlib.Algebra.Algebra.Defs
  • Mathlib.Algebra.Field.Defs
  • Mathlib.Algebra.Group.Action.Defs
  • Mathlib.Algebra.Group.Action.Units
  • Mathlib.Algebra.GroupWithZero.Units.Basic
  • Mathlib.Algebra.BigOperators.Group.Finset.Defs
  • Mathlib.Algebra.BigOperators.Group.Finset.Basic
  • Mathlib.Algebra.BigOperators.Group.Finset.Piecewise
  • Mathlib.Algebra.BigOperators.Group.Finset.Sigma
  • Mathlib.Algebra.BigOperators.Ring.Finset
  • Mathlib.Algebra.BigOperators.Finsupp.Basic
  • Mathlib.Algebra.Module.Equiv.Defs
  • Mathlib.Algebra.Polynomial.Basic
  • Mathlib.Algebra.Polynomial.Coeff
  • Mathlib.Algebra.Polynomial.Degree.Defs
  • Mathlib.Algebra.Polynomial.Degree.Operations
  • Mathlib.Algebra.Polynomial.BigOperators
  • Mathlib.Data.Finset.Insert
  • Mathlib.Data.Finsupp.Single
  • Mathlib.Data.Finsupp.SMulWithZero
  • Mathlib.Data.Int.Cast.Lemmas
  • Mathlib.Data.Matrix.Mul
  • Mathlib.LinearAlgebra.Basis.Defs
  • Mathlib.LinearAlgebra.Matrix.Defs
  • Mathlib.LinearAlgebra.Matrix.Trace
  • Mathlib.LinearAlgebra.Matrix.ToLin
  • Mathlib.LinearAlgebra.Matrix.Determinant.Basic
  • Mathlib.LinearAlgebra.Matrix.NonsingularInverse
  • Mathlib.RingTheory.Discriminant
  • Mathlib.RingTheory.Trace.Defs
  • Mathlib.RingTheory.Trace.Basic
  • Mathlib.Tactic.SplitIfs
Imported by2

Declarations

AlgebraicCurves.FunctionFields.Proofs.Discr_ne_zero_of_normalForm_split.DiscSplitSol.coeff_prod_of_natDegree_le
Source context 6 commands

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

section ProofImplementation
namespace AlgebraicCurves.FunctionFields.Proofs.Discr_ne_zero_of_normalForm_split
open Polynomial Matrix
universe u v
noncomputable section
namespace DiscSplitSol
theorem coeff_prod_of_natDegree_le {R : Type*} [CommRing R] {ι : Type*} (s : Finset ι)
    (f : ι → R[X]) (N : ι → ℕ) (h : ∀ i ∈ s, (f i).natDegree ≤ N i) :
    (∏ i ∈ s, f i).natDegree ≤ ∑ i ∈ s, N i ∧
      (∏ i ∈ s, f i).coeff (∑ i ∈ s, N i) = ∏ i ∈ s, (f i).coeff (N i)
AlgebraicCurves.FunctionFields.Proofs.Discr_ne_zero_of_normalForm_split.DiscSplitSol.main
Source context 8 commands

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

section ProofImplementation
namespace AlgebraicCurves.FunctionFields.Proofs.Discr_ne_zero_of_normalForm_split
open Polynomial Matrix
universe u v
noncomputable section
namespace DiscSplitSol
section Main
variable {K : Type u} [Field K] {n : ℕ} {B : Type v} [CommRing B] [Algebra K[X] B]
theorem main (b : Module.Basis (Fin (n + 1)) K[X] B) (d : Fin (n + 1) → ℕ)
    (hb0 : b 0 = 1) (hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
    (hdeg : ∀ i j k, i ≠ 0 → j ≠ 0 → ((b.repr (b i * b j)) k).natDegree ≤ d i + d j - d k)
    (τ : Fin (n + 1) → Fin (n + 1) → K) (hτu : IsUnit (Matrix.det (Matrix.of τ)))
    (hτ0 : ∀ j, τ j 0 = 1)
    (hτm : ∀ j i i', i ≠ 0 → i' ≠ 0 →
      τ j i * τ j i' = ∑ k, ((b.repr (b i * b i')) k).coeff (d i + d i' - d k) * τ j k) :
    Algebra.discr K[X] b ≠ 0
AlgebraicCurve.discr_ne_zero_of_normalForm_split
Source context 4 commands

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

section ProofImplementation
namespace AlgebraicCurves.FunctionFields.Proofs.Discr_ne_zero_of_normalForm_split
open Polynomial Matrix
universe u v
theorem _root_.AlgebraicCurve.discr_ne_zero_of_normalForm_split
    (K : Type u) [Field K] (n : ℕ) (B : Type v) [CommRing B] [Algebra K[X] B]
    (b : Module.Basis (Fin (n + 1)) K[X] B) (d : Fin (n + 1) → ℕ)
    (hb0 : b 0 = 1) (hd0 : d 0 = 0) (hd : ∀ i, i ≠ 0 → d i = 1 ∨ d i = 2)
    (hdeg : ∀ i j k, i ≠ 0 → j ≠ 0 → ((b.repr (b i * b j)) k).natDegree ≤ d i + d j - d k)
    (hinf : ∃ τ : Fin (n + 1) → Fin (n + 1) → K,
      IsUnit (Matrix.det (Matrix.of τ)) ∧
      (∀ j, τ j 0 = 1) ∧
      ∀ j i i', i ≠ 0 → i' ≠ 0 →
        τ j i * τ j i' = ∑ k, ((b.repr (b i * b i')) k).coeff (d i + d i' - d k) * τ j k) :
    Algebra.discr K[X] b ≠ 0