functor (F : Arg->
  sig
    type atom = F.t
    type t
    val f_true : t
    val f_false : t
    val make_atom : atom -> t
    val make_not : t -> t
    val make_and : t list -> t
    val make_or : t list -> t
    val make_xor : t -> t -> t
    val make_imply : t -> t -> t
    val make_equiv : t -> t -> t
    val make_cnf : t -> atom list list
    val print : Format.formatter -> t -> unit
  end