sig
module type ATTR =
sig
type t
type domain
type elt
type event
val dom : Fcl_var.ATTR.t -> Fcl_var.ATTR.domain
val on_refine : Fcl_var.ATTR.event
val on_subst : Fcl_var.ATTR.event
val on_min : Fcl_var.ATTR.event
val on_max : Fcl_var.ATTR.event
val fprint : Pervasives.out_channel -> Fcl_var.ATTR.t -> unit
val min : Fcl_var.ATTR.t -> Fcl_var.ATTR.elt
val max : Fcl_var.ATTR.t -> Fcl_var.ATTR.elt
val member : Fcl_var.ATTR.t -> Fcl_var.ATTR.elt -> bool
val id : Fcl_var.ATTR.t -> int
val constraints_number : Fcl_var.ATTR.t -> int
val size : Fcl_var.ATTR.t -> int
end
module Attr :
sig
type t
type domain = Fcl_domain.t
type elt = Fcl_domain.elt
type event
val dom : t -> domain
val on_refine : event
val on_subst : event
val on_min : event
val on_max : event
val fprint : out_channel -> t -> unit
val min : t -> elt
val max : t -> elt
val member : t -> elt -> bool
val id : t -> int
val constraints_number : t -> int
val size : t -> int
end
module SetAttr :
sig
type t
type domain = Fcl_setDomain.t
type elt = Fcl_setDomain.S.t
type event
val dom : t -> domain
val on_refine : event
val on_subst : event
val on_min : event
val on_max : event
val fprint : out_channel -> t -> unit
val min : t -> elt
val max : t -> elt
val member : t -> elt -> bool
val id : t -> int
val constraints_number : t -> int
val size : t -> int
end
type ('a, 'b) concrete = Unk of 'a | Val of 'b
module type BASICFD =
sig
type t
type attr
type domain
type elt
type event
val create :
?name:string -> Fcl_var.BASICFD.domain -> Fcl_var.BASICFD.t
val interval :
?name:string ->
Fcl_var.BASICFD.elt -> Fcl_var.BASICFD.elt -> Fcl_var.BASICFD.t
val array :
?name:string ->
int ->
Fcl_var.BASICFD.elt -> Fcl_var.BASICFD.elt -> Fcl_var.BASICFD.t array
val elt : Fcl_var.BASICFD.elt -> Fcl_var.BASICFD.t
val is_var : Fcl_var.BASICFD.t -> bool
val is_bound : Fcl_var.BASICFD.t -> bool
val value :
Fcl_var.BASICFD.t ->
(Fcl_var.BASICFD.attr, Fcl_var.BASICFD.elt) Fcl_var.concrete
val min : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt
val max : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt
val min_max :
Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt * Fcl_var.BASICFD.elt
val elt_value : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt
val int_value : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt
val size : Fcl_var.BASICFD.t -> int
val member : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt -> bool
val id : Fcl_var.BASICFD.t -> int
val name : Fcl_var.BASICFD.t -> string
val compare : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.t -> int
val equal : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.t -> bool
val fprint : Pervasives.out_channel -> Fcl_var.BASICFD.t -> unit
val fprint_array :
Pervasives.out_channel -> Fcl_var.BASICFD.t array -> unit
val unify : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt -> unit
val refine : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.domain -> unit
val refine_low : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt -> unit
val refine_up : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt -> unit
val refine_low_up :
Fcl_var.BASICFD.t ->
Fcl_var.BASICFD.elt -> Fcl_var.BASICFD.elt -> unit
val on_refine : Fcl_var.BASICFD.event
val on_subst : Fcl_var.BASICFD.event
val on_min : Fcl_var.BASICFD.event
val on_max : Fcl_var.BASICFD.event
val delay :
Fcl_var.BASICFD.event list ->
Fcl_var.BASICFD.t -> ?waking_id:int -> Fcl_cstr.t -> unit
val int : Fcl_var.BASICFD.elt -> Fcl_var.BASICFD.t
val subst : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt -> unit
val unify_cstr : Fcl_var.BASICFD.t -> Fcl_var.BASICFD.elt -> Fcl_cstr.t
end
module type FD =
sig
type t
type attr
type domain
type elt
type event
val create : ?name:string -> domain -> t
val interval : ?name:string -> elt -> elt -> t
val array : ?name:string -> int -> elt -> elt -> t array
val elt : elt -> t
val is_var : t -> bool
val is_bound : t -> bool
val value : t -> (attr, elt) concrete
val min : t -> elt
val max : t -> elt
val min_max : t -> elt * elt
val elt_value : t -> elt
val int_value : t -> elt
val size : t -> int
val member : t -> elt -> bool
val id : t -> int
val name : t -> string
val compare : t -> t -> int
val equal : t -> t -> bool
val fprint : out_channel -> t -> unit
val fprint_array : out_channel -> t array -> unit
val unify : t -> elt -> unit
val refine : t -> domain -> unit
val refine_low : t -> elt -> unit
val refine_up : t -> elt -> unit
val refine_low_up : t -> elt -> elt -> unit
val on_refine : event
val on_subst : event
val on_min : event
val on_max : event
val delay : event list -> t -> ?waking_id:int -> Fcl_cstr.t -> unit
val int : elt -> t
val subst : t -> elt -> unit
val unify_cstr : t -> elt -> Fcl_cstr.t
val remove : t -> elt -> unit
val values : t -> elt list
val iter : (elt -> unit) -> t -> unit
end
module Fd :
sig
type t
type attr = Attr.t
type domain = Fcl_domain.t
type elt = Fcl_domain.elt
type event = Attr.event
val create : ?name:string -> domain -> t
val interval : ?name:string -> elt -> elt -> t
val array : ?name:string -> int -> elt -> elt -> t array
val elt : elt -> t
val is_var : t -> bool
val is_bound : t -> bool
val value : t -> (attr, elt) concrete
val min : t -> elt
val max : t -> elt
val min_max : t -> elt * elt
val elt_value : t -> elt
val int_value : t -> elt
val size : t -> int
val member : t -> elt -> bool
val id : t -> int
val name : t -> string
val compare : t -> t -> int
val equal : t -> t -> bool
val fprint : out_channel -> t -> unit
val fprint_array : out_channel -> t array -> unit
val unify : t -> elt -> unit
val refine : t -> domain -> unit
val refine_low : t -> elt -> unit
val refine_up : t -> elt -> unit
val refine_low_up : t -> elt -> elt -> unit
val on_refine : event
val on_subst : event
val on_min : event
val on_max : event
val delay : event list -> t -> ?waking_id:int -> Fcl_cstr.t -> unit
val int : elt -> t
val subst : t -> elt -> unit
val unify_cstr : t -> elt -> Fcl_cstr.t
val remove : t -> elt -> unit
val values : t -> elt list
val iter : (elt -> unit) -> t -> unit
end
module SetFd :
sig
type t
type attr = SetAttr.t
type domain = Fcl_setDomain.t
type elt = Fcl_setDomain.S.t
type event = SetAttr.event
val create : ?name:string -> domain -> t
val interval : ?name:string -> elt -> elt -> t
val array : ?name:string -> int -> elt -> elt -> t array
val elt : elt -> t
val is_var : t -> bool
val is_bound : t -> bool
val value : t -> (attr, elt) concrete
val min : t -> elt
val max : t -> elt
val min_max : t -> elt * elt
val elt_value : t -> elt
val int_value : t -> elt
val size : t -> int
val member : t -> elt -> bool
val id : t -> int
val name : t -> string
val compare : t -> t -> int
val equal : t -> t -> bool
val fprint : out_channel -> t -> unit
val fprint_array : out_channel -> t array -> unit
val unify : t -> elt -> unit
val refine : t -> domain -> unit
val refine_low : t -> elt -> unit
val refine_up : t -> elt -> unit
val refine_low_up : t -> elt -> elt -> unit
val on_refine : event
val on_subst : event
val on_min : event
val on_max : event
val delay : event list -> t -> ?waking_id:int -> Fcl_cstr.t -> unit
val int : elt -> t
val subst : t -> elt -> unit
val unify_cstr : t -> elt -> Fcl_cstr.t
end
type concrete_fd = (Fcl_var.Fd.attr, Fcl_var.Fd.elt) Fcl_var.concrete
val delay :
Fcl_var.Attr.event list ->
Fcl_var.Fd.t -> ?waking_id:int -> Fcl_cstr.t -> unit
end