sig
  exception Error of string
  type variable
  type renv
  val setLocation : Loc.loc -> unit
  val setVariableDependence :
    CfTypes.variable -> CfTypes.variable list -> unit
  val error : string -> unit
  val typeToString : CfTypes.variable -> string
  val readyTask : CfTypes.renv * (unit -> unit) -> unit
  val executeTasks : unit -> unit
  type slot
  val newSlot : CfTypes.renv -> int -> (unit -> unit) -> CfTypes.slot
  val sync : CfTypes.slot -> unit
  val incrSlot : CfTypes.slot -> unit
  val slotVariableStrict : CfTypes.slot -> CfTypes.variable -> unit
  val slotVariableLenient : CfTypes.slot -> CfTypes.variable -> unit
  val unify : CfTypes.variable -> CfTypes.variable -> unit
  val isEqual :
    CfTypes.renv ->
    CfTypes.variable -> CfTypes.variable -> CfTypes.variable -> unit
  val newFree : unit -> CfTypes.variable
  val newFreeLoc : Loc.loc -> string -> CfTypes.renv -> CfTypes.variable
  val newFreeWithTask :
    CfTypes.renv -> (CfTypes.variable -> unit) -> CfTypes.variable
  val newInteger : Intbig.intbig -> CfTypes.variable
  val isInteger : CfTypes.variable -> bool
  val getInteger : CfTypes.variable -> Intbig.intbig
  val getInt : CfTypes.variable -> int
  val newFloat : float -> CfTypes.variable
  val isFloat : CfTypes.variable -> bool
  val getFloat : CfTypes.variable -> float
  val newBoolean : bool -> CfTypes.variable
  val isBoolean : CfTypes.variable -> bool
  val getBoolean : CfTypes.variable -> bool
  val zero_width_vector : CfTypes.variable
  val is_zero_width_vector : CfTypes.variable -> bool
  val checkBits : string -> unit
  val newVector : Cf_fnf.producer -> CfTypes.variable
  val newVectorConst :
    Intbig.intbig -> Intbig.intbig -> Cf_fnf.system -> CfTypes.variable
  val isVector : CfTypes.variable -> bool
  val getWidth : CfTypes.variable -> int
  val getProducer : CfTypes.variable -> Cf_fnf.producer
  val checkWidth : CfTypes.variable -> unit
  val checkWidthNotZero : CfTypes.variable -> unit
  val checkWidthIs : CfTypes.variable -> int -> unit
  val checkWidthsAreSame : CfTypes.variable -> CfTypes.variable -> unit
  val isProperty : CfTypes.variable -> bool
  val newPropertyVector : CfTypes.variable -> CfTypes.variable
  val newPropertyNot : CfTypes.variable -> CfTypes.variable
  val newPropertyOr :
    CfTypes.variable -> CfTypes.variable -> CfTypes.variable
  val newPropertyNext : CfTypes.variable -> CfTypes.variable
  val newPropertyUntil :
    CfTypes.variable -> CfTypes.variable -> CfTypes.variable
  val newRecord :
    int -> string array -> CfTypes.variable array -> CfTypes.variable
  val isRecord : CfTypes.variable -> bool
  val recordInfo : CfTypes.variable -> CfTypes.variable
  val getFieldByName : CfTypes.variable -> string -> CfTypes.variable
  val getFieldByIndex : CfTypes.variable -> int -> CfTypes.variable
  val isList : CfTypes.variable -> bool
  val listToString : CfTypes.variable -> string
  val stringToList : string -> CfTypes.variable
  val listToIntegerList : CfTypes.variable -> Intbig.intbig list
  val listToIntList : CfTypes.variable -> int list
  val newComp :
    CfTypes.renv * Loc.loc * int * string * string array *
    (CfTypes.renv -> unit) -> CfTypes.variable
  val isComp : CfTypes.variable -> bool
  val getCompInfo :
    CfTypes.variable ->
    CfTypes.renv * Loc.loc * int * string * string array *
    (CfTypes.renv -> unit)
  val newSystem : CfTypes.renv -> CfTypes.variable
  val isSystem : CfTypes.variable -> bool
  val getRenv : CfTypes.variable -> CfTypes.renv
  val getPorts : CfTypes.variable -> CfTypes.variable
  val getEnvId : CfTypes.renv -> Cf_fnf.system
  val newEnvRoot : unit -> CfTypes.renv
  val extendEnv :
    CfTypes.renv ->
    Loc.loc ->
    CfTypes.renv * Loc.loc * int * string * string array * '->
    string -> CfTypes.renv
  val getRelativeEnv : CfTypes.renv -> int -> CfTypes.renv
  val getRenvValues : CfTypes.renv -> CfTypes.variable array
  val checkAllPortsDetermined : unit -> unit
end