sig
  type var_name = string
  type value = F of float | I of int | B of bool
  type subst = Luc4ocaml.var_name * Luc4ocaml.value
  type inputs = Luc4ocaml.subst list
  type outputs = Luc4ocaml.subst list
  type locals = Luc4ocaml.subst list
  type solution = Luc4ocaml.outputs * Luc4ocaml.locals
  type state
  exception MakeError
  val make :
    ?seed:int ->
    ?fair:bool ->
    ?pp:string ->
    ?verbose:int ->
    ?precision:int -> ?main:string option -> string list -> Luc4ocaml.state
  type step_mode = StepInside | StepEdges | StepVertices
  val step :
    ?mode:Luc4ocaml.step_mode ->
    Luc4ocaml.state ->
    Luc4ocaml.inputs -> Luc4ocaml.state * Luc4ocaml.solution
  val step_se :
    ?mode:Luc4ocaml.step_mode ->
    Luc4ocaml.state Pervasives.ref -> Luc4ocaml.inputs -> Luc4ocaml.solution
  val rif_read : Pervasives.in_channel -> Luc4ocaml.state -> Luc4ocaml.inputs
  val string_of_value : Luc4ocaml.value -> string
  val rif_write_interface :
    Pervasives.out_channel -> Luc4ocaml.state -> bool -> unit
  val rif_write :
    Pervasives.out_channel ->
    Luc4ocaml.state -> Luc4ocaml.subst list -> Luc4ocaml.subst list -> unit
end