File: Mathlib/RingTheory/Polynomial/Hermite/Basic.lean

full_name: Polynomial.hermite
code: /-- the probabilists' Hermite polynomials. -/
noncomputable def hermite : ℕ → Polynomial ℤ
  
goal: ℕ → ℤ[X]

full_name: Polynomial.hermite_succ
code: /-- The recursion `hermite (n+1) = (x - d/dx) (hermite n)` -/
@[simp]
theorem hermite_succ (n : ℕ) : hermite (n + 1) = X * hermite n - derivative (hermite n) 
goal: Polynomial.hermite (n + 1) = Polynomial.X * Polynomial.hermite n - Polynomial.derivative (Polynomial.hermite n)

full_name: Polynomial.hermite_eq_iterate
code: theorem hermite_eq_iterate (n : ℕ) : hermite n = (fun p => X * p - derivative p)^[n] 1 
goal: Polynomial.hermite n = (fun p => Polynomial.X * p - Polynomial.derivative p)^[n] 1

full_name: Polynomial.hermite_zero
code: @[simp]
theorem hermite_zero : hermite 0 = C 1 
goal: Polynomial.hermite 0 = Polynomial.C 1

full_name: Polynomial.hermite_one
code: theorem hermite_one : hermite 1 = X 
goal: Polynomial.hermite 1 = Polynomial.X

full_name: Polynomial.coeff_hermite_succ_zero
code: theorem coeff_hermite_succ_zero (n : ℕ) : coeff (hermite (n + 1)) 0 = -coeff (hermite n) 1 
goal: (Polynomial.hermite (n + 1)).coeff 0 = -(Polynomial.hermite n).coeff 1

full_name: Polynomial.coeff_hermite_succ_succ
code: theorem coeff_hermite_succ_succ (n k : ℕ) : coeff (hermite (n + 1)) (k + 1) =
    coeff (hermite n) k - (k + 2) * coeff (hermite n) (k + 2) 
goal: (Polynomial.hermite (n + 1)).coeff (k + 1) =
  (Polynomial.hermite n).coeff k - (↑k + 2) * (Polynomial.hermite n).coeff (k + 2)

full_name: Polynomial.coeff_hermite_of_lt
code: theorem coeff_hermite_of_lt {n k : ℕ} (hnk : n < k) : coeff (hermite n) k = 0 
goal: (Polynomial.hermite n).coeff k = 0

full_name: Polynomial.coeff_hermite_self
code: @[simp]
theorem coeff_hermite_self (n : ℕ) : coeff (hermite n) n = 1 
goal: (Polynomial.hermite n).coeff n = 1

full_name: Polynomial.degree_hermite
code: @[simp]
theorem degree_hermite (n : ℕ) : (hermite n).degree = n 
goal: (Polynomial.hermite n).degree = ↑n

full_name: Polynomial.natDegree_hermite
code: @[simp]
theorem natDegree_hermite {n : ℕ} : (hermite n).natDegree = n 
goal: (Polynomial.hermite n).natDegree = n

full_name: Polynomial.leadingCoeff_hermite
code: @[simp]
theorem leadingCoeff_hermite (n : ℕ) : (hermite n).leadingCoeff = 1 
goal: (Polynomial.hermite n).leadingCoeff = 1

full_name: Polynomial.hermite_monic
code: theorem hermite_monic (n : ℕ) : (hermite n).Monic 
goal: (Polynomial.hermite n).Monic

full_name: Polynomial.coeff_hermite_of_odd_add
code: theorem coeff_hermite_of_odd_add {n k : ℕ} (hnk : Odd (n + k)) : coeff (hermite n) k = 0 
goal: (Polynomial.hermite n).coeff k = 0

full_name: Polynomial.coeff_hermite_explicit
code: /-- Because of `coeff_hermite_of_odd_add`, every nonzero coefficient is described as follows. -/
theorem coeff_hermite_explicit :
    ∀ n k : ℕ, coeff (hermite (2 * n + k)) k = (-1) ^ n * (2 * n - 1)‼ * Nat.choose (2 * n + k) k
  
goal: (Polynomial.hermite (2 * n + k)).coeff k = (-1) ^ n * ↑(2 * n - 1).doubleFactorial * ↑((2 * n + k).choose k)

full_name: Polynomial.coeff_hermite_of_even_add
code: theorem coeff_hermite_of_even_add {n k : ℕ} (hnk : Even (n + k)) :
    coeff (hermite n) k = (-1) ^ ((n - k) / 2) * (n - k - 1)‼ * Nat.choose n k 
goal: (Polynomial.hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1).doubleFactorial * ↑(n.choose k)

full_name: Polynomial.coeff_hermite
code: theorem coeff_hermite (n k : ℕ) :
    coeff (hermite n) k =
      if Even (n + k) then (-1 : ℤ) ^ ((n - k) / 2) * (n - k - 1)‼ * Nat.choose n k else 0 
goal: (Polynomial.hermite n).coeff k =
  if Even (n + k) then (-1) ^ ((n - k) / 2) * ↑(n - k - 1).doubleFactorial * ↑(n.choose k) else 0