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