let pp_print_program ppf (p : program) = 
  fprintf ppf "@[<v>%a@]@."
    (pp_print_list ~elem_pp:pp_print_declaration ~sep_pp:pp_print_sep_newline)
    p