bool.mli 1.02 KB
Newer Older
1 2
module type S =
sig
3 4
  include Custom.T
  type elem
5

6
  val get: t -> (elem list * elem list) list
7
  val get': t -> (elem list * (elem list) list) list
8

9 10 11 12 13 14
  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
15

16
  val iter: (elem-> unit) -> t -> unit
17 18 19

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

22
(*
23
  val print: string -> (Format.formatter -> elem -> unit) -> t ->
24
    (Format.formatter -> unit) list
25
*)
26

27
  val trivially_disjoint : t -> t -> bool
28 29
end

30 31 32 33
module type MAKE = functor (X : Custom.T) -> S with type elem = X.t

module Make : MAKE

34
(*
35 36 37 38 39 40 41 42
module type S' = sig
  include S
  type bdd = False | True | Br of elem * t * t
  val br: t -> bdd
end

module MakeBdd(X : Custom.T) : S' with type elem = X.t

43 44
module type S'' = sig
  include S
45
  val dnf: (elem list -> (elem list) list -> unit) -> t -> unit
46 47
end

48
module Make2(X : Custom.T) : S'' with type elem = X.t
49
*)