sig
  type symbol_status = Multiset | Lexicographic
  module Constr :
    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
  type t
  type precedence = Precedence.t
  val equal : Precedence.t -> Precedence.t -> bool
  val snapshot : Precedence.t -> ID.t list
  val compare : Precedence.t -> ID.t -> ID.t -> int
  val mem : Precedence.t -> ID.t -> bool
  val status : Precedence.t -> ID.t -> Precedence.symbol_status
  val weight : Precedence.t -> ID.t -> int
  val add_list : Precedence.t -> ID.t list -> unit
  val add_seq : Precedence.t -> ID.t Sequence.t -> unit
  val declare_status :
    Precedence.t -> ID.t -> Precedence.symbol_status -> unit
  module Seq : sig val symbols : Precedence.t -> ID.t Sequence.t end
  val pp_snapshot : ID.t list CCFormat.printer
  val pp_debugf : Precedence.t CCFormat.printer
  val pp : t CCFormat.printer
  val to_string : t -> string
  type weight_fun = ID.t -> int
  val weight_modarity : arity:(ID.t -> int) -> Precedence.weight_fun
  val weight_constant : Precedence.weight_fun
  val set_weight : Precedence.t -> Precedence.weight_fun -> unit
  val create :
    ?weight:Precedence.weight_fun ->
    [ `total ] Precedence.Constr.t -> ID.t list -> Precedence.t
  val default : ID.t list -> Precedence.t
  val default_seq : ID.t Sequence.t -> Precedence.t
  val constr : Precedence.t -> [ `total ] Precedence.Constr.t
end