sig
  type level
  val older : Fcl_stak.level -> Fcl_stak.level -> bool
  val size : unit -> int
  val depth : unit -> int
  val level : unit -> Fcl_stak.level
  val levels : unit -> Fcl_stak.level list
  val nb_choice_points : unit -> int
  exception Level_not_found of Fcl_stak.level
  val cut : Fcl_stak.level -> unit
  exception Fail of string
  val fail : string -> 'a
  type 'a ref
  val ref : '-> 'Fcl_stak.ref
  val set : 'Fcl_stak.ref -> '-> unit
  val get : 'Fcl_stak.ref -> 'a
  type gl = { name : string; call : unit -> Fcl_stak.gl option; }
  exception Empty_stack
  val reset : unit -> unit
  val save : Fcl_stak.gl list -> Fcl_stak.level
  val backtrack : unit -> Fcl_stak.gl list
  val backtrack_all : unit -> unit
  val trail : (unit -> unit) -> unit
  val cut_bottom : Fcl_stak.level -> unit
  val unsafe_set : 'Fcl_stak.ref -> '-> unit
end