sig   module Sigma :     sig       type t       val equal : Letify.Sigma.t -> Letify.Sigma.t -> bool       val pretty : string -> Format.formatter -> Letify.Sigma.t -> unit       val e_apply : Letify.Sigma.t -> Lang.F.term -> Lang.F.term       val p_apply : Letify.Sigma.t -> Lang.F.pred -> Lang.F.pred       val empty : Letify.Sigma.t       val add : Lang.F.var -> Lang.F.term -> Letify.Sigma.t -> Letify.Sigma.t       val assume : Letify.Sigma.t -> Lang.F.pred -> Letify.Sigma.t       val find : Lang.F.var -> Letify.Sigma.t -> Lang.F.term       val iter :         (Lang.F.var -> Lang.F.term -> unit) -> Letify.Sigma.t -> unit       val domain : Letify.Sigma.t -> Lang.F.Vars.t       val codomain : Letify.Sigma.t -> Lang.F.Vars.t     end   module Defs :     sig       type t       val empty : Letify.Defs.t       val merge : Letify.Defs.t -> Letify.Defs.t -> Letify.Defs.t       val extract : Lang.F.pred -> Letify.Defs.t       val add : Letify.Defs.t Pervasives.ref -> Lang.F.pred -> unit       val domain : Letify.Defs.t -> Lang.F.Vars.t     end   val bind :     Letify.Sigma.t -> Letify.Defs.t -> Lang.F.Vars.t -> Letify.Sigma.t   val add_definitions :     Letify.Sigma.t ->     Letify.Defs.t -> Lang.F.Vars.t -> Lang.F.pred list -> Lang.F.pred list   module Split :     sig       type occur       val create : unit -> Letify.Split.occur       val add : Letify.Split.occur -> Lang.F.pred -> unit       val select : Letify.Split.occur -> (Lang.F.pred * int) list     end end