sig
  module Simulation_info :
    sig
      type 'a t = {
        story_id : int;
        story_time : float;
        story_event : int;
        profiling_info : 'a;
      }
      val compare_by_story_id :
        'Trace.Simulation_info.t -> 'Trace.Simulation_info.t -> int
      val update_profiling_info :
        '-> 'Trace.Simulation_info.t -> 'Trace.Simulation_info.t
      val event : 'Trace.Simulation_info.t -> int
      val story_id : 'Trace.Simulation_info.t -> int
      val to_json :
        ('-> Yojson.Basic.json) ->
        'Trace.Simulation_info.t -> Yojson.Basic.json
      val of_json :
        (Yojson.Basic.json -> 'a) ->
        Yojson.Basic.json -> 'Trace.Simulation_info.t
    end
  type event_kind = RULE of int | INIT of int list | PERT of string
  val print_event_kind :
    ?env:Model.t -> Format.formatter -> Trace.event_kind -> unit
  val print_event_kind_dot_annot :
    Model.t -> Format.formatter -> Trace.event_kind -> unit
  type step =
      Subs of int * int
    | Rule of int * Instantiation.concrete Instantiation.event *
        unit Trace.Simulation_info.t
    | Pert of string * Instantiation.concrete Instantiation.event *
        unit Trace.Simulation_info.t
    | Init of Instantiation.concrete Instantiation.action list
    | Obs of string * Instantiation.concrete Instantiation.test list list *
        unit Trace.Simulation_info.t
    | Dummy of string
  type t = Trace.step list
  val dummy_step : string -> Trace.step
  val subs_step : int -> int -> Trace.step
  val step_is_obs : Trace.step -> bool
  val step_is_init : Trace.step -> bool
  val step_is_subs : Trace.step -> bool
  val step_is_rule : Trace.step -> bool
  val step_is_pert : Trace.step -> bool
  val has_creation_of_step : Trace.step -> bool
  val tests_of_step :
    Trace.step -> Instantiation.concrete Instantiation.test list
  val actions_of_step :
    Trace.step ->
    Instantiation.concrete Instantiation.action list *
    (Instantiation.concrete Instantiation.site *
     Instantiation.concrete Instantiation.binding_state)
    list
  val side_effects_of_step :
    Trace.step -> Instantiation.concrete Instantiation.site list
  val simulation_info_of_step :
    Trace.step -> unit Trace.Simulation_info.t option
  val creation_of_actions :
    ('-> 'b) -> 'Instantiation.action list -> 'b list
  val creation_of_step : Trace.step -> int list
  val print_step :
    ?compact:bool -> ?env:Model.t -> Format.formatter -> Trace.step -> unit
  val print_label_of_step :
    ?env:Model.t -> Format.formatter -> Trace.step -> unit
  val step_to_yojson : Trace.step -> Yojson.Basic.json
  val step_of_yojson : Yojson.Basic.json -> Trace.step
  val write_step : Bi_outbuf.t -> Trace.step -> unit
  val string_of_step : ?len:int -> Trace.step -> string
  val read_step : Yojson.Safe.lexer_state -> Lexing.lexbuf -> Trace.step
  val step_of_string : string -> Trace.step
  val to_yojson : Trace.t -> Yojson.Basic.json
  val of_yojson : Yojson.Basic.json -> Trace.t
  val init_trace_file : uuid:int -> Model.t -> Pervasives.out_channel -> unit
  val fold_trace_file :
    (Model.t -> '-> Trace.step -> 'a) ->
    (Model.t -> 'a) -> string -> Model.t * 'a
end