boolVar.mli 1.22 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
module type E = sig
  type elem
  include Custom.T

  val empty : t
  val full  : t
  val cup   : t -> t -> t
  val cap   : t -> t -> t
  val diff  : t -> t -> t
  val atom  : elem -> t

end

module type S = sig

  type s
17
  type elem = s Var.var_or_atom
18 19 20 21 22 23
  include Custom.T

  (** returns the union of all leaves in the BDD *)
  val leafconj: t -> s

  val get: t -> (elem list * elem list) list
24
(*  val build : (elem list * elem list) list -> t *)
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
  val empty : t
  val full  : t
  (* same as full, but we keep it for the moment to avoid chaging the code everywhere *)
  val any  : t
  val cup   : t -> t -> t
  val cap   : t -> t -> t
  val diff  : t -> t -> t
  val atom  : elem -> t

  val trivially_disjoint: t -> t -> bool

  (** vars a : return a bdd that is ( Any ^ Var a ) *)
  val vars  : Var.var -> t

  val iter: (elem-> unit) -> t -> unit

  val compute: empty:'b -> full:'b -> cup:('b -> 'b -> 'b)
    -> cap:('b -> 'b -> 'b) -> diff:('b -> 'b -> 'b) ->
    atom:(elem -> 'b) -> t -> 'b

  val is_empty : t -> bool

  val pp_print : Format.formatter -> t -> unit

  val print : ?f:(Format.formatter -> elem -> unit) -> t -> (Format.formatter -> unit) list

end

module type MAKE = functor (T : E) -> S with type s = T.t
54
module Make : MAKE