sig
  type assignment_set =
      Empty
    | Any
    | FO of string * (int * Assignments.assignment_set) list
    | Real of (Poly.polynomial * Formula.sign_op) list list
  val assigned_vars :
    Formula.var list -> Assignments.assignment_set -> Formula.var list
  val str : Assignments.assignment_set -> string
  val named_str : Structure.structure -> Assignments.assignment_set -> string
  val choose_fo :
    (string * int) list -> Assignments.assignment_set -> (string * int) list
  val assigned_elems : string -> Assignments.assignment_set -> int list
  val tuples :
    Structure.Elems.t ->
    string list -> Assignments.assignment_set -> int array list
  val fo_assgn_to_list :
    int list ->
    Formula.fo_var list ->
    Assignments.assignment_set ->
    (Formula.fo_var * Structure.Elems.elt) list list
  val fo_assgn_of_list : (string * int) list -> Assignments.assignment_set
  val compare_vars : string -> string -> int
  type set_list
  val set_to_set_list :
    Structure.Elems.t -> Assignments.set_list Pervasives.ref
  val list_to_set_list : int list -> Assignments.set_list Pervasives.ref
  val slist : Assignments.set_list Pervasives.ref -> int list
  val sset : Assignments.set_list Pervasives.ref -> Structure.Elems.t
  val sllen : Assignments.set_list Pervasives.ref -> int
  val join :
    Assignments.assignment_set ->
    Assignments.assignment_set -> Assignments.assignment_set
  val equal_vars :
    ?unequal:bool ->
    Assignments.set_list Pervasives.ref ->
    string ->
    string -> Assignments.assignment_set -> Assignments.assignment_set
  val sum :
    Assignments.set_list Pervasives.ref ->
    Assignments.assignment_set ->
    Assignments.assignment_set -> Assignments.assignment_set
  val project :
    Assignments.set_list Pervasives.ref ->
    string -> Assignments.assignment_set -> Assignments.assignment_set
  val project_list :
    Assignments.set_list Pervasives.ref ->
    Assignments.assignment_set -> string list -> Assignments.assignment_set
  val universal :
    Assignments.set_list Pervasives.ref ->
    string -> Assignments.assignment_set -> Assignments.assignment_set
  val universal_list :
    Assignments.set_list Pervasives.ref ->
    Assignments.assignment_set -> string list -> Assignments.assignment_set
  val complement :
    Assignments.set_list Pervasives.ref ->
    Assignments.assignment_set -> Assignments.assignment_set
  val complement_join :
    Assignments.set_list Pervasives.ref ->
    Assignments.assignment_set ->
    Assignments.assignment_set -> Assignments.assignment_set
  val assignments_of_list :
    Assignments.set_list Pervasives.ref ->
    string array -> int array list -> Assignments.assignment_set
  val join_rel :
    Assignments.assignment_set ->
    string array ->
    Structure.Tuples.t ->
    Structure.Tuples.t array ->
    Assignments.set_list Pervasives.ref -> Assignments.assignment_set
  val full_join_rel :
    Assignments.assignment_set ->
    string array ->
    Structure.Tuples.t ->
    Assignments.set_list Pervasives.ref -> Assignments.assignment_set
  val compress :
    int -> Assignments.assignment_set -> Assignments.assignment_set
end