let compare s1 s2 = match s1, s2 with | Name (n1,k1), Name (n2,k2) -> let c = compare_kind k1 k2 in if c = 0 then Hstring.compare n1 n2 else c | Name _, _ -> -1 | _, Name _ -> 1 | Var n1, Var n2 -> Hstring.compare n1 n2 | Var _, _ -> -1 | _ ,Var _ -> 1 | Int i1, Int i2 -> Hstring.compare i1 i2 | Int _, _ -> -1 | _ ,Int _ -> 1 | _ -> Pervasives.compare s1 s2