Research Article

The Formalization of Discrete Fourier Transform in HOL

Algorithm 1

The formal definition of FFT.
FFT:
 (k N m:num)(f:num->real) (f1:num->real) (f2:num->real).
  (N <> 0) (N = 2 m) ∧ (0 <=  k ∧ k < N DIV 2) ∧ ((f1(r)  =  f(2 r)) ∧ (f2(r)  =  f(2 r  +  1))) ∧
  (DFT f1 ((N DIV 2):num) k = csum (0,N DIV 2) (λr. f1 r exp (i (-2 pi/(N/2) r k)))) ∧
  (DFT f2 ((N DIV 2):num) k = csum (0,N DIV 2) (λr. f2 r exp (i (-2 pi/(N/2) r k)))) ∧
  (DFT f N k = csum (0,N) (λn. f n exp (i (-2 pi/N n k)))) ∧
  (DFT f N (k + (N DIV 2)) = csum (0,N) (λn. f n exp (i (-2 pi/N n (k + (N/2))))))
    ⇒
    ((DFT f N k = DFT f1 ((N DIV 2):num) k + exp (i (-2 pi/N k))
    DFT f2 ((N DIV 2):num) k) ∧
    (DFT f N (k + (N DIV 2)) = DFT f1 ((N DIV 2):num) k + exp (i (-2 pi/N (N/2)))
      exp (i (-2 pi/N k)) DFT f2 ((N DIV 2):num) k))
    ⇒
      ((DFT f N k = DFT f1 ((N DIV 2):num) k + exp (i (-2 pi/N k))
      DFT f2 ((N DIV 2):num) k) ∧
      (DFT f N (k + (N DIV 2)) = DFT f1 ((N DIV 2):num) k - exp (i (-2 pi/N k))
       DFT f2 ((N DIV 2):num) k))