Module

MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span.lean

Nyll.AlgebraicCurves.Foundations.Polynomial.MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
7 declarations indexed from sourceView source ↗

Mv Polynomial relation mem span of forall is Homogeneous mem span

Imports14
  • Lean.Elab.Tactic.Omega
  • Mathlib.Algebra.BigOperators.Group.Finset.Basic
  • Mathlib.Algebra.BigOperators.Group.Finset.Sigma
  • Mathlib.Algebra.MonoidAlgebra.Module
  • Mathlib.Algebra.MvPolynomial.Basic
  • Mathlib.Data.Finsupp.Order
  • Mathlib.Data.Finsupp.Weight
  • Mathlib.LinearAlgebra.Finsupp.LinearCombination
  • Mathlib.RingTheory.GradedAlgebra.Basic
  • Mathlib.RingTheory.MvPolynomial.Homogeneous
  • Mathlib.Tactic.Choose
  • Mathlib.Tactic.Push
  • Mathlib.Tactic.Ring.RingNF
  • Nyll.AlgebraicCurves.Foundations.Polynomial.MvPolynomial_exists_skew_eq_sum_mul_X_of_sum_mul_X_eq_zero
Imported by2

Declarations

AlgebraicCurves.Foundations.Polynomial.Proofs.MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span.GotzRegD.decompose_eq
Source context 7 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
namespace GotzRegD
open MvPolynomial
attribute [local instance] MvPolynomial.gradedAlgebra
variable {L : Type} [Field L] {n : ℕ}
theorem decompose_eq (q : MvPolynomial (Fin (n + 1)) L) (d : ℕ) :
    (DirectSum.decompose (homogeneousSubmodule (Fin (n + 1)) L) q d : MvPolynomial (Fin (n + 1)) L)
      =
      homogeneousComponent d q
AlgebraicCurves.Foundations.Polynomial.Proofs.MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span.GotzRegD.homogeneousComponent_mul_add
Source context 7 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
namespace GotzRegD
open MvPolynomial
attribute [local instance] MvPolynomial.gradedAlgebra
variable {L : Type} [Field L] {n : ℕ}
theorem homogeneousComponent_mul_add {G : MvPolynomial (Fin (n + 1)) L} {m : ℕ} (hG :
  G.IsHomogeneous m)
    (a : MvPolynomial (Fin (n + 1)) L) (d : ℕ) :
    homogeneousComponent (m + d) (a * G) = homogeneousComponent d a * G
AlgebraicCurves.Foundations.Polynomial.Proofs.MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span.GotzRegD.exists_eq_sum_X_mul
Source context 7 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
namespace GotzRegD
open MvPolynomial
attribute [local instance] MvPolynomial.gradedAlgebra
variable {L : Type} [Field L] {n : ℕ}
theorem exists_eq_sum_X_mul (k : ℕ) (g : MvPolynomial (Fin (n + 1)) L) (hg : g.IsHomogeneous (k +
  1)) :
    ∃ q : Fin (n + 1) → MvPolynomial (Fin (n + 1)) L, (∀ i, (q i).IsHomogeneous k) ∧ g = ∑ i, X i *
      q i
AlgebraicCurves.Foundations.Polynomial.Proofs.MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span.GotzRegD.exists_eq_sum_mul_of_span
Source context 7 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
namespace GotzRegD
open MvPolynomial
attribute [local instance] MvPolynomial.gradedAlgebra
variable {L : Type} [Field L] {n : ℕ}
theorem exists_eq_sum_mul_of_span {N q : ℕ} (u : Fin N → MvPolynomial (Fin (n + 1)) L)
    (hspan : ∀ w : MvPolynomial (Fin (n + 1)) L, w.IsHomogeneous q → w ∈ Submodule.span L
      (Set.range u)) :
    ∀ (p : ℕ) (w : MvPolynomial (Fin (n + 1)) L), w.IsHomogeneous (q + p) →
      ∃ d : Fin N → MvPolynomial (Fin (n + 1)) L, (∀ j, (d j).IsHomogeneous p) ∧ w = ∑ j, d j * u j
  | 0, w, hw => by
      obtain ⟨κ, hκ⟩ := (Submodule.mem_span_range_iff_exists_fun L).mp (hspan w hw)
      refine ⟨fun j => C (κ j), fun j => isHomogeneous_C _ _, ?_⟩
      rw [← hκ]; exact Finset.sum_congr rfl fun j _ => by rw [smul_eq_C_mul]
  | p + 1, w, hw => by
      obtain ⟨r, hr, rfl⟩ := exists_eq_sum_X_mul (q + p) w hw
      have ih := fun i => exists_eq_sum_mul_of_span u hspan p (r i) (hr i)
      choose d hd hrd using ih
      refine ⟨fun j => ∑ i, X i * d i j, fun j => IsHomogeneous.sum _ _ _ fun i _ => ?_, ?_⟩
      · have := (isHomogeneous_X L i).mul (hd i j); rwa [Nat.add_comm 1 p] at this
      · calc ∑ i, X i * r i = ∑ i, ∑ j, X i * d i j * u j := Finset.sum_congr rfl fun i _ => by
              rw [hrd i, Finset.mul_sum]; exact Finset.sum_congr rfl fun j _ => by rw [mul_assoc]
          _ = ∑ j, (∑ i, X i * d i j) * u j := by
              rw [Finset.sum_comm]; exact Finset.sum_congr rfl fun j _ => by rw [Finset.sum_mul]
AlgebraicCurves.Foundations.Polynomial.Proofs.MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span.GotzRegD.sum_sum_eq_zero_of_alternating
Source context 7 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
namespace GotzRegD
open MvPolynomial
attribute [local instance] MvPolynomial.gradedAlgebra
variable {L : Type} [Field L] {n : ℕ}
theorem sum_sum_eq_zero_of_alternating {M : Type} [AddCommGroup M] {N : ℕ} (f : Fin N → Fin N → M)
    (hskew : ∀ ν μ, f ν μ = -f μ ν) (hdiag : ∀ ν, f ν ν = 0) : ∑ ν, ∑ μ, f ν μ = 0
AlgebraicCurves.Foundations.Polynomial.Proofs.MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span.GotzRegD.main
Source context 7 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
namespace GotzRegD
open MvPolynomial
attribute [local instance] MvPolynomial.gradedAlgebra
variable {L : Type} [Field L] {n : ℕ}
theorem main (m g : ℕ) (F : Fin g → MvPolynomial (Fin (n + 1)) L) (hF : ∀ i, (F i).IsHomogeneous m)
    (hspan : ∀ w : MvPolynomial (Fin (n + 1)) L, w.IsHomogeneous m → w ∈ Submodule.span L
      (Set.range F)) :
    ∀ (d : ℕ) (c : Fin g → MvPolynomial (Fin (n + 1)) L), (∀ i, (c i).IsHomogeneous d) →
      ∑ i, c i * F i = 0 →
      c ∈ Submodule.span (MvPolynomial (Fin (n + 1)) L)
        {l : Fin g → MvPolynomial (Fin (n + 1)) L | (∃ d' ≤ 1, ∀ i, (l i).IsHomogeneous d') ∧ ∑ i,
          l i * F i = 0}
MvPolynomial.relation_mem_span_of_forall_isHomogeneous_mem_span
Source context 4 commands

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

section ProofImplementation
namespace AlgebraicCurves.Foundations.Polynomial.Proofs
namespace MvPolynomial_relation_mem_span_of_forall_isHomogeneous_mem_span
open MvPolynomial in
theorem _root_.MvPolynomial.relation_mem_span_of_forall_isHomogeneous_mem_span
    (n m g : ℕ) (K : Type) [Field K] (F : Fin g → MvPolynomial (Fin (n + 1)) K)
    (hF : ∀ i, (F i).IsHomogeneous m)
    (hspan : ∀ w : MvPolynomial (Fin (n + 1)) K, w.IsHomogeneous m → w ∈ Submodule.span K
      (Set.range F))
    (d : ℕ) (c : Fin g → MvPolynomial (Fin (n + 1)) K) (hc : ∀ i, (c i).IsHomogeneous d)
    (hcF : ∑ i, c i * F i = 0) :
    c ∈ Submodule.span (MvPolynomial (Fin (n + 1)) K)
      {l : Fin g → MvPolynomial (Fin (n + 1)) K |
        (∃ d' ≤ 1, ∀ i, (l i).IsHomogeneous d') ∧ ∑ i, l i * F i = 0}