sig   type t   val name : Facile.Goals.t -> string   val fprint : Pervasives.out_channel -> Facile.Goals.t -> unit   val atomic : ?name:string -> (unit -> unit) -> Facile.Goals.t   val create : ?name:string -> ('-> Facile.Goals.t) -> '-> Facile.Goals.t   val create_rec :     ?name:string -> (Facile.Goals.t -> Facile.Goals.t) -> Facile.Goals.t   val fail : Facile.Goals.t   val success : Facile.Goals.t   val ( &&~ ) : Facile.Goals.t -> Facile.Goals.t -> Facile.Goals.t   val ( ||~ ) : Facile.Goals.t -> Facile.Goals.t -> Facile.Goals.t   val once : Facile.Goals.t -> Facile.Goals.t   val solve : ?control:(int -> unit) -> Facile.Goals.t -> bool   val lds : ?step:int -> Facile.Goals.t -> Facile.Goals.t   val unify : Facile.Var.Fd.t -> int -> Facile.Goals.t   val indomain : Facile.Var.Fd.t -> Facile.Goals.t   val instantiate :     (Facile.Domain.t -> int) -> Facile.Var.Fd.t -> Facile.Goals.t   val dichotomic : Facile.Var.Fd.t -> Facile.Goals.t   val forto : int -> int -> (int -> Facile.Goals.t) -> Facile.Goals.t   val fordownto : int -> int -> (int -> Facile.Goals.t) -> Facile.Goals.t   module Array :     sig       val foralli :         ?select:('a array -> int) ->         (int -> '-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val forall :         ?select:('a array -> int) ->         ('-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val existsi :         ?select:('a array -> int) ->         (int -> '-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val exists :         ?select:('a array -> int) ->         ('-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val choose_index :         (Facile.Var.Attr.t -> Facile.Var.Attr.t -> bool) ->         Facile.Var.Fd.t array -> int       val not_instantiated_fd : Facile.Var.Fd.t array -> int       val labeling : Facile.Var.Fd.t array -> Facile.Goals.t     end   module GlArray :     sig       val iter_h :         ('a array -> int) ->         ('-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val iter_hi :         ('a array -> int) ->         (int -> '-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val iter : ('-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val iteri : (int -> '-> Facile.Goals.t) -> 'a array -> Facile.Goals.t       val iter2 :         ('-> '-> Facile.Goals.t) ->         'a array -> 'b array -> Facile.Goals.t       val labeling : Facile.Var.Fd.t array -> Facile.Goals.t       val choose_index :         (Facile.Var.Attr.t -> Facile.Var.Attr.t -> bool) ->         Facile.Var.Fd.t array -> int       val not_instantiated_fd : Facile.Var.Fd.t array -> int     end   module List :     sig       val forall :         ?select:('a list -> 'a * 'a list) ->         ('-> Facile.Goals.t) -> 'a list -> Facile.Goals.t       val exists :         ?select:('a list -> 'a * 'a list) ->         ('-> Facile.Goals.t) -> 'a list -> Facile.Goals.t       val member : Facile.Var.Fd.t -> int list -> Facile.Goals.t       val labeling : Facile.Var.Fd.t list -> Facile.Goals.t     end   module GlList :     sig       val iter : ('-> Facile.Goals.t) -> 'a list -> Facile.Goals.t       val labeling : Facile.Var.Fd.t list -> Facile.Goals.t       val member : Facile.Var.Fd.t -> int list -> Facile.Goals.t       val iter_h :         ('a list -> 'a * 'a list) ->         ('-> Facile.Goals.t) -> 'a list -> Facile.Goals.t     end   type bb_mode = Restart | Continue   val minimize :     ?step:int ->     ?mode:Facile.Goals.bb_mode ->     Facile.Goals.t -> Facile.Var.Fd.t -> (int -> unit) -> Facile.Goals.t   val sigma :     ?domain:Facile.Domain.t ->     (Facile.Var.Fd.t -> Facile.Goals.t) -> Facile.Goals.t   module Conjunto :     sig val indomain : Facile.Var.SetFd.t -> Facile.Goals.t end end