let hash t = match t with | Tabstract s -> Hstring.hash s | Tsum (s, l) -> let h = List.fold_left (fun h x -> 13 * h + Hstring.hash x) (Hstring.hash s) l in abs h | _ -> Hashtbl.hash t