sig
  type 'a t = private ID.t -> ID.t -> int
    constraint 'a = [< `partial | `total ]
  val arity : (ID.t -> int) -> [ `partial ] Precedence.Constr.t
  val invfreq : ID.t Sequence.t -> [ `partial ] Precedence.Constr.t
  val max : ID.t list -> [ `partial ] Precedence.Constr.t
  val min : ID.t list -> [ `partial ] Precedence.Constr.t
  val alpha : [ `total ] Precedence.Constr.t
  val compose :
    [ `partial ] Precedence.Constr.t ->
    ([< `partial | `total ] as 'a) Precedence.Constr.t ->
    'Precedence.Constr.t
  val compose_sort :
    (int * [ `partial ] Precedence.Constr.t) list ->
    [ `partial ] Precedence.Constr.t
  val make : (ID.t -> ID.t -> int) -> [ `partial ] Precedence.Constr.t
end