Module

SignPolynomialAction.lean

Nyll.SchemeTheory.RingTheory.SignPolynomialAction
15 declarations indexed from sourceView source ↗

Simultaneous sign change on the polynomial ring

The sign group is the concrete group ℤˣ = {1, -1}. Its action is kept as explicit data, so no competing action on the polynomial ring is registered. This is the action occurring in Stacks Project, Tag 0BTE.

Imports7
  • Mathlib.Algebra.MvPolynomial.Basic
  • Mathlib.Algebra.MvPolynomial.Eval
  • Mathlib.Algebra.MvPolynomial.CommRing
  • Mathlib.Algebra.Algebra.Equiv
  • Mathlib.Algebra.Algebra.Subalgebra.Basic
  • Mathlib.Algebra.Ring.Action.Basic
  • Mathlib.Algebra.Ring.Int.Units
Imported by2

Declarations

SchemeTheory.SignPolynomial.simultaneousNegHom

Simultaneous negation of all polynomial variables as an algebra homomorphism.

Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
def simultaneousNegHom : MvPolynomial (Fin n) k →ₐ[k] MvPolynomial (Fin n) k
SchemeTheory.SignPolynomial.simultaneousNegHom_comp_self
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem simultaneousNegHom_comp_self :
    (simultaneousNegHom k n).comp (simultaneousNegHom k n) =
      AlgHom.id k (MvPolynomial (Fin n) k)
SchemeTheory.SignPolynomial.simultaneousNeg

The actual algebra involution sending every X i to -X i.

Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
def simultaneousNeg : MvPolynomial (Fin n) k ≃ₐ[k] MvPolynomial (Fin n) k
SchemeTheory.SignPolynomial.simultaneousNeg_apply
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem simultaneousNeg_apply (p : MvPolynomial (Fin n) k) :
    simultaneousNeg k n p = simultaneousNegHom k n p
SchemeTheory.SignPolynomial.simultaneousNeg_X
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem simultaneousNeg_X (i : Fin n) :
    simultaneousNeg k n (X i) = -X i
SchemeTheory.SignPolynomial.simultaneousNeg_involutive
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem simultaneousNeg_involutive : Function.Involutive (simultaneousNeg k n)
SchemeTheory.SignPolynomial.simultaneousNeg_mul_self
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem simultaneousNeg_mul_self : simultaneousNeg k n * simultaneousNeg k n = 1
SchemeTheory.SignPolynomial.signActionHom

The action homomorphism of the two-element group of integer units.

Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
def signActionHom : ℤˣ →* (MvPolynomial (Fin n) k ≃ₐ[k] MvPolynomial (Fin n) k) where
  toFun ε := if ε = 1 then 1 else simultaneousNeg k n
  map_one' := ite_eq_left rfl
  map_mul' ε δ := by
    rcases Int.units_eq_one_or ε with rfl | rfl
    · simp only [one_mul, ite_true]
    · rcases Int.units_eq_one_or δ with rfl | rfl
      · simp only [mul_one, ite_true]
      · have hneg : (-1 : ℤˣ) ≠ 1 := by decide
        have hmul : (-1 : ℤˣ) * (-1) = 1 := by decide
        simp only [hmul, ite_true, ite_eq_right hneg, simultaneousNeg_mul_self]
SchemeTheory.SignPolynomial.signActionHom_apply
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem signActionHom_apply (ε : ℤˣ) :
    signActionHom k n ε = if ε = 1 then 1 else simultaneousNeg k n := rfl
SchemeTheory.SignPolynomial.signAction

The sign action on the polynomial algebra, supplied as explicit data.

Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
def signAction : MulSemiringAction ℤˣ (MvPolynomial (Fin n) k)
SchemeTheory.SignPolynomial.signAction_neg_one
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem signAction_neg_one (p : MvPolynomial (Fin n) k) :
    (signAction k n).smul (-1 : ℤˣ) p = simultaneousNeg k n p
SchemeTheory.SignPolynomial.signAction_fixed_iff

Fixed by the entire sign group is equivalent to fixed by simultaneous negation.

Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem signAction_fixed_iff (p : MvPolynomial (Fin n) k) :
    (∀ ε : ℤˣ, (signAction k n).smul ε p = p) ↔ simultaneousNeg k n p = p
SchemeTheory.SignPolynomial.fixedSubalgebra

The fixed subalgebra of the simultaneous sign action.

Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
def fixedSubalgebra : Subalgebra k (MvPolynomial (Fin n) k)
SchemeTheory.SignPolynomial.mem_fixedSubalgebra_iff
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem mem_fixedSubalgebra_iff (p : MvPolynomial (Fin n) k) :
    p ∈ fixedSubalgebra k n ↔ simultaneousNeg k n p = p
SchemeTheory.SignPolynomial.mem_fixedSubalgebra_iff_forall_signAction
Source context 4 commands

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

noncomputable section
namespace SchemeTheory.SignPolynomial
open MvPolynomial
variable (k : Type*) [CommRing k] (n : ℕ)
theorem mem_fixedSubalgebra_iff_forall_signAction (p : MvPolynomial (Fin n) k) :
    p ∈ fixedSubalgebra k n ↔ ∀ ε : ℤˣ, (signAction k n).smul ε p = p