let rec compatible_signature xs ys = match xs , ys with | [] , [] -> true | [] , _ | _ , [] -> false | x::xs , y::ys -> (compare_tau (tau_of_var x) (tau_of_var y) = 0) && compatible_signature xs ys