let rec kind_equal ka kb =
match ka,kb with
| Kcint i, Kcint j -> i = j
| Kint, Kint | Kreal, Kreal | Kbool, Kbool -> true
| Kptr t, Kptr t' -> Typ.equal t t'
| Kset k, Kset k' -> kind_equal k k'
| Kstruct cp, Kstruct cp' -> Compinfo.equal cp cp'
| Karray a, Karray a' -> AinfoComparable.equal a a'
| Kadt (s,ks), Kadt(s',ks') ->
s=s' && List.for_all2 kind_equal ks ks'
| _, _ -> false