let conflicting_signatures func1 func2 =
let same_type (t1, _) (t2, _) = (t1 = t2) in
let same_name = (func1.name = func2.name) in
let same_params = try List.for_all2 same_type func1.formals func2.formals with
| Invalid_argument(_) -> false in
same_name && same_params