sig
  type t
  val ty : State_selection.t Type.t
  val empty : State_selection.t
  val full : State_selection.t
  val singleton : State.t -> State_selection.t
  val of_list : State.t list -> State_selection.t
  val is_empty : State_selection.t -> bool
  val is_full : State_selection.t -> bool
  val mem : State_selection.t -> State.t -> bool
  module type S =
    sig
      val with_dependencies : State.t -> State_selection.t
      val only_dependencies : State.t -> State_selection.t
      val with_codependencies : State.t -> State_selection.t
      val only_codependencies : State.t -> State_selection.t
      val union : State_selection.t -> State_selection.t -> State_selection.t
      val diff : State_selection.t -> State_selection.t -> State_selection.t
      val cardinal : State_selection.t -> int
      val pretty : Format.formatter -> State_selection.t -> unit
      val iter_succ :
        (State.t -> unit) -> State_selection.t -> State.t -> unit
      val fold_succ :
        (State.t -> '-> 'a) -> State_selection.t -> State.t -> '-> 'a
      val iter : (State.t -> unit) -> State_selection.t -> unit
      val fold : (State.t -> '-> 'a) -> State_selection.t -> '-> 'a
      val iter_in_order : (State.t -> unit) -> State_selection.t -> unit
      val fold_in_order :
        (State.t -> '-> 'a) -> State_selection.t -> '-> 'a
      val remove_useless_states : State_selection.t -> State_selection.t
    end
  module Static : S
  module Dynamic :
    sig
      val with_dependencies : State.t -> t
      val only_dependencies : State.t -> t
      val with_codependencies : State.t -> t
      val only_codependencies : State.t -> t
      val union : t -> t -> t
      val diff : t -> t -> t
      val cardinal : t -> int
      val pretty : Format.formatter -> t -> unit
      val iter_succ : (State.t -> unit) -> t -> State.t -> unit
      val fold_succ : (State.t -> '-> 'a) -> t -> State.t -> '-> 'a
      val iter : (State.t -> unit) -> t -> unit
      val fold : (State.t -> '-> 'a) -> t -> '-> 'a
      val iter_in_order : (State.t -> unit) -> t -> unit
      val fold_in_order : (State.t -> '-> 'a) -> t -> '-> 'a
      val remove_useless_states : t -> t
      val dump : State_selection.t -> string -> unit
      module Dot :
        functor (A : State_dependency_graph.Attributes->
          sig val dump : State_selection.t -> string -> unit end
    end
end