sig
  type ('a, 'b) t
  val name : ('a, 'b) CamlInterface.Rel2.t -> string
  val create :
    ?k1:'CamlInterface.Univ.key ->
    ?k2:'CamlInterface.Univ.key -> string -> ('a, 'b) CamlInterface.Rel2.t
  val get :
    ('a, 'b) CamlInterface.Rel2.t ->
    CamlInterface.Logic.T.t -> ('a * 'b) option
  val make :
    ('a, 'b) CamlInterface.Rel2.t -> '-> '-> CamlInterface.Logic.T.t
  val apply :
    ('a, 'b) CamlInterface.Rel2.t ->
    CamlInterface.Logic.T.t ->
    CamlInterface.Logic.T.t -> CamlInterface.Logic.T.t
  val find :
    CamlInterface.Logic.DB.t ->
    ('a, 'b) CamlInterface.Rel2.t -> ('a * 'b) list
  val subset :
    CamlInterface.Logic.DB.t ->
    ('a, 'b) CamlInterface.Rel2.t -> ('a, 'b) CamlInterface.Rel2.t -> unit
  val transitive :
    CamlInterface.Logic.DB.t -> ('a, 'a) CamlInterface.Rel2.t -> unit
  val tc_of :
    CamlInterface.Logic.DB.t ->
    tc:('a, 'a) CamlInterface.Rel2.t -> ('a, 'a) CamlInterface.Rel2.t -> unit
  val reflexive :
    CamlInterface.Logic.DB.t -> ('a, 'a) CamlInterface.Rel2.t -> unit
  val symmetry :
    CamlInterface.Logic.DB.t -> ('a, 'a) CamlInterface.Rel2.t -> unit
  val from_fun :
    CamlInterface.Logic.DB.t ->
    ('a, 'b) CamlInterface.Rel2.t -> ('-> '-> bool) -> unit
  val add_list :
    CamlInterface.Logic.DB.t ->
    ('a, 'b) CamlInterface.Rel2.t -> ('a * 'b) list -> unit
  val to_string : ('a, 'b) CamlInterface.Rel2.t -> string
  val fmt : Format.formatter -> ('a, 'b) CamlInterface.Rel2.t -> unit
end