File: Mathlib/RingTheory/WittVector/Verschiebung.lean

full_name: WittVector._aux_Mathlib_RingTheory_WittVector_Verschiebung___macroRules_WittVector_term𝕎_1
code: local notation "𝕎" => WittVector p
goal: Lean.Macro

full_name: WittVector._aux_Mathlib_RingTheory_WittVector_Verschiebung___unexpand_WittVector_1
code: local notation "𝕎" => WittVector p
goal: Lean.PrettyPrinter.Unexpander

full_name: WittVector.verschiebungFun
code: /-- `verschiebungFun x` shifts the coefficients of `x` up by one,
by inserting 0 as the 0th coefficient.
`x.coeff i` then becomes `(verchiebungFun x).coeff (i + 1)`.

`verschiebungFun` is the underlying function of the additive monoid hom `WittVector.verschiebung`.
-/
def verschiebungFun (x : 𝕎 R) : 𝕎 R 
goal: WittVector p R

full_name: WittVector.verschiebungFun_coeff
code: theorem verschiebungFun_coeff (x : 𝕎 R) (n : ℕ) :
    (verschiebungFun x).coeff n = if n = 0 then 0 else x.coeff (n - 1) 
goal: x.verschiebungFun.coeff n = if n = 0 then 0 else x.coeff (n - 1)

full_name: WittVector.verschiebungFun_coeff_zero
code: theorem verschiebungFun_coeff_zero (x : 𝕎 R) : (verschiebungFun x).coeff 0 = 0 
goal: x.verschiebungFun.coeff 0 = 0

full_name: WittVector.verschiebungFun_coeff_succ
code: @[simp]
theorem verschiebungFun_coeff_succ (x : 𝕎 R) (n : ℕ) :
    (verschiebungFun x).coeff n.succ = x.coeff n 
goal: x.verschiebungFun.coeff n.succ = x.coeff n

full_name: WittVector.ghostComponent_zero_verschiebungFun
code: @[ghost_simps]
theorem ghostComponent_zero_verschiebungFun (x : 𝕎 R) :
    ghostComponent 0 (verschiebungFun x) = 0 
goal: (WittVector.ghostComponent 0) x.verschiebungFun = 0

full_name: WittVector.ghostComponent_verschiebungFun
code: @[ghost_simps]
theorem ghostComponent_verschiebungFun (x : 𝕎 R) (n : ℕ) :
    ghostComponent (n + 1) (verschiebungFun x) = p * ghostComponent n x 
goal: (WittVector.ghostComponent (n + 1)) x.verschiebungFun = ↑p * (WittVector.ghostComponent n) x

full_name: WittVector.verschiebungPoly
code: /-- The 0th Verschiebung polynomial is 0. For `n > 0`, the `n`th Verschiebung polynomial is the
variable `X (n-1)`.
-/
def verschiebungPoly (n : ℕ) : MvPolynomial ℕ ℤ 
goal: MvPolynomial ℕ ℤ

full_name: WittVector.verschiebungPoly_zero
code: @[simp]
theorem verschiebungPoly_zero : verschiebungPoly 0 = 0 
goal: WittVector.verschiebungPoly 0 = 0

full_name: WittVector.aeval_verschiebung_poly'
code: theorem aeval_verschiebung_poly' (x : 𝕎 R) (n : ℕ) :
    aeval x.coeff (verschiebungPoly n) = (verschiebungFun x).coeff n 
goal: (MvPolynomial.aeval x.coeff) (WittVector.verschiebungPoly n) = x.verschiebungFun.coeff n

full_name: WittVector.verschiebungFun_isPoly
code: /-- `WittVector.verschiebung` has polynomial structure given by `WittVector.verschiebungPoly`.
-/
-- Porting note: replaced `@[is_poly]` with `instance`.
instance verschiebungFun_isPoly : IsPoly p fun R _Rcr => @verschiebungFun p R _Rcr 
goal: WittVector.IsPoly p fun R _Rcr => WittVector.verschiebungFun

full_name: WittVector.verschiebung
code: /--
`verschiebung x` shifts the coefficients of `x` up by one, by inserting 0 as the 0th coefficient.
`x.coeff i` then becomes `(verchiebung x).coeff (i + 1)`.

This is an additive monoid hom with underlying function `verschiebung_fun`.
-/
noncomputable def verschiebung : 𝕎 R →+ 𝕎 R 
goal: WittVector p R →+ WittVector p R

full_name: WittVector.verschiebung_isPoly
code: /-- `WittVector.verschiebung` is a polynomial function. -/
@[is_poly]
theorem verschiebung_isPoly : IsPoly p fun R _Rcr => @verschiebung p R hp _Rcr 
goal: WittVector.IsPoly p fun R _Rcr => ⇑WittVector.verschiebung

full_name: WittVector.map_verschiebung
code: /-- verschiebung is a natural transformation -/
@[simp]
theorem map_verschiebung (f : R →+* S) (x : 𝕎 R) :
    map f (verschiebung x) = verschiebung (map f x) 
goal: (WittVector.map f) (WittVector.verschiebung x) = WittVector.verschiebung ((WittVector.map f) x)

full_name: WittVector.ghostComponent_zero_verschiebung
code: @[ghost_simps]
theorem ghostComponent_zero_verschiebung (x : 𝕎 R) : ghostComponent 0 (verschiebung x) = 0 
goal: (WittVector.ghostComponent 0) (WittVector.verschiebung x) = 0

full_name: WittVector.ghostComponent_verschiebung
code: @[ghost_simps]
theorem ghostComponent_verschiebung (x : 𝕎 R) (n : ℕ) :
    ghostComponent (n + 1) (verschiebung x) = p * ghostComponent n x 
goal: (WittVector.ghostComponent (n + 1)) (WittVector.verschiebung x) = ↑p * (WittVector.ghostComponent n) x

full_name: WittVector.verschiebung_coeff_zero
code: @[simp]
theorem verschiebung_coeff_zero (x : 𝕎 R) : (verschiebung x).coeff 0 = 0 
goal: (WittVector.verschiebung x).coeff 0 = 0

full_name: WittVector.verschiebung_coeff_add_one
code: theorem verschiebung_coeff_add_one (x : 𝕎 R) (n : ℕ) :
    (verschiebung x).coeff (n + 1) = x.coeff n 
goal: (WittVector.verschiebung x).coeff (n + 1) = x.coeff n

full_name: WittVector.verschiebung_coeff_succ
code: @[simp]
theorem verschiebung_coeff_succ (x : 𝕎 R) (n : ℕ) : (verschiebung x).coeff n.succ = x.coeff n 
goal: (WittVector.verschiebung x).coeff n.succ = x.coeff n

full_name: WittVector.aeval_verschiebungPoly
code: theorem aeval_verschiebungPoly (x : 𝕎 R) (n : ℕ) :
    aeval x.coeff (verschiebungPoly n) = (verschiebung x).coeff n 
goal: (MvPolynomial.aeval x.coeff) (WittVector.verschiebungPoly n) = (WittVector.verschiebung x).coeff n

full_name: WittVector.bind₁_verschiebungPoly_wittPolynomial
code: @[simp]
theorem bind₁_verschiebungPoly_wittPolynomial (n : ℕ) :
    bind₁ verschiebungPoly (wittPolynomial p ℤ n) =
      if n = 0 then 0 else p * wittPolynomial p ℤ (n - 1) 
goal: (MvPolynomial.bind₁ WittVector.verschiebungPoly) (wittPolynomial p ℤ n) =
  if n = 0 then 0 else ↑p * wittPolynomial p ℤ (n - 1)