let print_proc (s: proc) = match s with
            Proc(id,plist,dlist,c)      ->  "\013Proc(" ^ (print_ide id) ^ ",\n\t" ^ 
                                                      (print_string_list (List.map print_param plist)) ^ 
                                                      (print_string_list (List.map print_dec dlist)) ^ "\n\t" ^ 
                                                      (print_cmd c) ^ ")\n\n"
          | Func(id,plist,r,dlist,c)    ->  "\013Func(" ^ (print_ide id) ^ ", " ^ 
                                                      (print_ret r) ^ "\t" ^
                                                      (print_string_list (List.map print_param plist)) ^ "\n\t" ^ 
                                                      (print_string_list (List.map print_dec dlist)) ^ "\n\t" ^ 
                                                      (print_cmd c) ^ ")\n\n"