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 ->
'a 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