sig
type ('a, 'b) t
type setable
type unsetable
type 'a setable_t = ('a, Fcl_invariant.setable) Fcl_invariant.t
type 'a unsetable_t = ('a, Fcl_invariant.unsetable) Fcl_invariant.t
val create : ?name:string -> 'a -> 'a Fcl_invariant.setable_t
val constant : ?name:string -> 'a -> 'a Fcl_invariant.unsetable_t
val set : 'a Fcl_invariant.setable_t -> 'a -> unit
val get : ('a, 'b) Fcl_invariant.t -> 'a
val id : ('a, 'b) Fcl_invariant.t -> int
val name : ('a, 'b) Fcl_invariant.t -> string
val fprint :
Pervasives.out_channel ->
?printer:(Pervasives.out_channel -> 'a -> unit) ->
('a, 'b) Fcl_invariant.t -> unit
val unary :
?name:string ->
('a -> 'b) -> ('a, 'c) Fcl_invariant.t -> 'b Fcl_invariant.unsetable_t
val binary :
?name:string ->
('a -> 'b -> 'c) ->
('a, 'd) Fcl_invariant.t ->
('b, 'e) Fcl_invariant.t -> 'c Fcl_invariant.unsetable_t
val ternary :
?name:string ->
('a -> 'b -> 'c -> 'd) ->
('a, 'e) Fcl_invariant.t ->
('b, 'f) Fcl_invariant.t ->
('c, 'g) Fcl_invariant.t -> 'd Fcl_invariant.unsetable_t
val sum : (int, 'a) Fcl_invariant.t array -> int Fcl_invariant.unsetable_t
val prod : (int, 'a) Fcl_invariant.t array -> int Fcl_invariant.unsetable_t
module Array :
sig
val get :
('a, 'b) Fcl_invariant.t array ->
(int, 'c) Fcl_invariant.t -> 'a Fcl_invariant.unsetable_t
val argmin :
('a, 'b) Fcl_invariant.t array ->
('a -> 'c) -> int Fcl_invariant.unsetable_t
val min :
('a, 'b) Fcl_invariant.t array ->
('a -> 'c) -> 'a Fcl_invariant.unsetable_t
end
module type FD =
sig
type fd
type elt
val min :
Fcl_invariant.FD.fd -> Fcl_invariant.FD.elt Fcl_invariant.unsetable_t
val max :
Fcl_invariant.FD.fd -> Fcl_invariant.FD.elt Fcl_invariant.unsetable_t
val size : Fcl_invariant.FD.fd -> int Fcl_invariant.unsetable_t
val is_var : Fcl_invariant.FD.fd -> bool Fcl_invariant.unsetable_t
val unary :
?name:string ->
(Fcl_invariant.FD.fd -> 'a) ->
Fcl_invariant.FD.fd -> 'a Fcl_invariant.unsetable_t
end
module Fd :
sig
type fd = Fcl_var.Fd.t
type elt = Fcl_var.Fd.elt
val min : fd -> elt unsetable_t
val max : fd -> elt unsetable_t
val size : fd -> int unsetable_t
val is_var : fd -> bool unsetable_t
val unary : ?name:string -> (fd -> 'a) -> fd -> 'a unsetable_t
end
module SetFd :
sig
type fd = Fcl_var.SetFd.t
type elt = Fcl_var.SetFd.elt
val min : fd -> elt unsetable_t
val max : fd -> elt unsetable_t
val size : fd -> int unsetable_t
val is_var : fd -> bool unsetable_t
val unary : ?name:string -> (fd -> 'a) -> fd -> 'a unsetable_t
end
end