functor (F : Formula.Vernacular->
  sig
    val unop : string -> 'F.term -> 'F.term
    val binop : string -> 'F.term -> 'F.term -> 'F.term
    val predop : string -> 'F.term -> 'F.term -> F.pred
    val e_ineg : Formula.integer F.term -> Formula.integer F.term
    val e_rneg : Formula.real F.term -> Formula.real F.term
    val e_icmp : Formula.cmp_op -> 'F.term -> 'F.term -> 'F.term
    val p_icmp : Formula.cmp_op -> 'F.term -> 'F.term -> F.pred
    val e_rcmp : Formula.cmp_op -> 'F.term -> 'F.term -> 'F.term
    val p_rcmp : Formula.cmp_op -> 'F.term -> 'F.term -> F.pred
    val e_iop : Formula.integer_op -> 'F.term -> 'F.term -> 'F.term
    val e_rop : Formula.real_op -> 'F.term -> 'F.term -> 'F.term
    val real_of_integer : Formula.integer F.term -> Formula.real F.term
    val integer_of_real : Formula.real F.term -> Formula.integer F.term
    val a_true : Formula.abstract F.term
    val a_false : Formula.abstract F.term
    val e_bool : Formula.boolean F.term -> Formula.integer F.term
    val e_cond :
      Formula.boolean F.term -> 'F.term -> 'F.term -> 'F.term
    val e_not : Formula.boolean F.term -> Formula.boolean F.term
    val e_and :
      Formula.boolean F.term ->
      Formula.boolean F.term -> Formula.boolean F.term
    val e_or :
      Formula.boolean F.term ->
      Formula.boolean F.term -> Formula.boolean F.term
    val e_bnot : Formula.integer F.term -> Formula.integer F.term
    val e_band :
      Formula.integer F.term ->
      Formula.integer F.term -> Formula.integer F.term
    val e_bor :
      Formula.integer F.term ->
      Formula.integer F.term -> Formula.integer F.term
    val e_bxor :
      Formula.integer F.term ->
      Formula.integer F.term -> Formula.integer F.term
    val e_lshift :
      Formula.integer F.term ->
      Formula.integer F.term -> Formula.integer F.term
    val e_rshift :
      Formula.integer F.term ->
      Formula.integer F.term -> Formula.integer F.term
  end