functor (A : PreDomain) (B : PreDomain->
  sig
    type 'a t
    val pp : Format.formatter -> 'a t -> unit
    val show : 'a t -> string
    val closure : 'a t -> 'Syntax.formula
    val join : 'a t -> 'a t -> 'a t
    val widen : 'a t -> 'a t -> 'a t
    val equal : 'a t -> 'a t -> bool
    val tr_symbols : 'a t -> (Syntax.symbol * Syntax.symbol) list
    val left : 'A.t -> 'a t
    val right : 'B.t -> 'a t
  end