let rec hash = function
  | Var(x) ->
      Var.hash x
  | App(f, l) ->
      (Sym.hash f + (List.fold_left (fun h a -> h + hash a) 1 l)) land 0x3FFFFFFF