sig
  type assignment_set =
      Empty
    | Any
    | FO of string * (int * AssignmentSet.assignment_set) list
    | MSO of string *
        ((Structure.Elems.t * Structure.Elems.t) *
         AssignmentSet.assignment_set)
        list
    | Real of (Poly.polynomial * Formula.sign_op) list list
  val assigned_vars :
    Formula.var list -> AssignmentSet.assignment_set -> Formula.var list
  val str : AssignmentSet.assignment_set -> string
  val named_str :
    Structure.structure -> AssignmentSet.assignment_set -> string
  val choose_fo :
    (string * int) list ->
    AssignmentSet.assignment_set -> (string * int) list
  val assigned_elems : string -> AssignmentSet.assignment_set -> int list
  val tuples :
    Structure.Elems.t ->
    string list -> AssignmentSet.assignment_set -> int array list
  val fo_assgn_to_list :
    int list ->
    Formula.fo_var list ->
    AssignmentSet.assignment_set ->
    (Formula.fo_var * Structure.Elems.elt) list list
  val fo_assgn_of_list : (string * int) list -> AssignmentSet.assignment_set
end