sig
  module Constr :
    sig
      type 'a t
      val create : string -> ('-> Sexplib.Sexp.t) -> 'Univ.Constr.t
      val name : 'Univ.Constr.t -> string
      val hash : 'Univ.Constr.t -> int
      val sexp_of_t :
        ('-> Sexplib.Sexp.t) -> 'Univ.Constr.t -> Sexplib.Sexp.t
    end
  type t
  val constr_name : Univ.t -> string
  val create : 'Univ.Constr.t -> '-> Univ.t
  val does_match : Univ.t -> 'Univ.Constr.t -> bool
  val match_ : Univ.t -> 'Univ.Constr.t -> 'a option
  val match_exn : Univ.t -> 'Univ.Constr.t -> 'a
  val sexp_of_t : Univ.t -> Sexplib.Sexp.t
end