Zulip Chat Archive

Stream: new members

Topic: How to prove the equality of polynomial coefficients?


oishi (Dec 24 2024 at 16:10):

image.png
Does anyone know how to prove the equality of coefficients here in Lean4? In other words, how should I complete the proof following split_ifs here?

import Mathlib

open BigOperators Nat Finset

def lah_number (n k : ) :  :=
  match n, k with
  | 0, 0 => 1
  | 0, _ => 0
  | _, 0 => 0
  | n+1, k+1 => choose n k * lah_number n (k+1) + choose n (k+1) * lah_number n k


theorem idt_237 (n : ) (x : ) : Polynomial.eval x (ascPochhammer  n)
                                  =  k in range (n+1), lah_number n k * Polynomial.eval x (descPochhammer  k) := by
  sorry


theorem idt_273 (n : ) (x : ) : Polynomial.eval x (descPochhammer  n)
                                  =  k in range (n+1), lah_number n k * Polynomial.eval x (ascPochhammer  k) * (-1:)^(n-k) := by
  sorry

theorem idt_240 (n m: ) :  k in range (n+1), lah_number n k * lah_number k m * (-1:)^(k+m)
                          = if n = m then 1 else 0 := by
  have h1 :  x: , Polynomial.eval x (ascPochhammer  n) =  k in range (n+1), lah_number n k * Polynomial.eval x (descPochhammer  k) := by
    exact idt_237 n
  have h2 :  x:, Polynomial.eval x (ascPochhammer  n)
        =  k  range (n + 1), (lah_number n k) *  m in range (k+1), lah_number k m * Polynomial.eval x (ascPochhammer  m) * (-1:)^(k-m) := by
    intro x
    rw [h1]
    apply sum_congr rfl
    intro k hk
    congr
    rw [idt_273 k x]
  have h3 :  x:,  k  range (n + 1), (lah_number n k) *  m  range (k + 1), (lah_number k m) * Polynomial.eval x (ascPochhammer  m) * (-1:) ^ (k - m)
          =  m  range (n + 1), Polynomial.eval x (ascPochhammer  m) *  k  Ico m (n + 1), (lah_number n k) * (lah_number k m) * (-1:) ^ (k - m) := by
    sorry
  have h4 :  x:,  m  range (n + 1), Polynomial.eval x (ascPochhammer  m) *  k  Ico m (n + 1), (lah_number n k) * (lah_number k m) * (-1:) ^ (k - m)
          =  m  range (n + 1), Polynomial.eval x (ascPochhammer  m) *  k  range (n + 1), (lah_number n k) * (lah_number k m) * (-1:) ^ (k + m) := by
    sorry
  have h5 :  x:, Polynomial.eval x (ascPochhammer  n)
          =  m  range (n + 1), Polynomial.eval x (ascPochhammer  m) *  k  range (n + 1), (lah_number n k) * (lah_number k m) * (-1:) ^ (k + m) := by
    intro x
    rw [h2, h3, h4]
  split_ifs with h
  .
    sorry
  .
    sorry

Last updated: May 02 2025 at 03:31 UTC