sig
  type t
  type toplevel_ty = FO.Ty.t list * FO.Ty.t
  val view : FO.Ty.t -> FO.Ty.t FO.ty_view
  val const : FO.id -> FO.Ty.t
  val app : FO.id -> FO.Ty.t list -> FO.Ty.t
  val builtin : FO.TyBuiltin.t -> FO.Ty.t
  val arrow : FO.Ty.t list -> FO.Ty.t -> FO.Ty.toplevel_ty
  val is_prop : FO.Ty.t -> bool
  val equal : FO.Ty.t -> FO.Ty.t -> bool
  val compare : FO.Ty.t -> FO.Ty.t -> int
  val hash : FO.Ty.t -> int
  val to_seq : FO.Ty.t -> FO.Ty.t Sequence.t
end