sig
  type ast
  type preprocessed_ast
  type compil
  type cache
  type mixture
  type chemical_species
  type canonic_species
  type pattern
  type connected_component
  type rule
  type init =
      ((Ode_interface_sig.Interface.connected_component array list, int)
       Alg_expr.e * Ode_interface_sig.Interface.rule)
      list
  val empty_cache :
    Ode_interface_sig.Interface.compil -> Ode_interface_sig.Interface.cache
  val get_init :
    Ode_interface_sig.Interface.compil -> Ode_interface_sig.Interface.init
  val mixture_of_init :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule -> Ode_interface_sig.Interface.mixture
  val dummy_chemical_species :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.chemical_species
  val compare_connected_component :
    Ode_interface_sig.Interface.connected_component ->
    Ode_interface_sig.Interface.connected_component -> int
  val print_connected_component :
    ?compil:Ode_interface_sig.Interface.compil ->
    Format.formatter ->
    Ode_interface_sig.Interface.connected_component -> unit
  val print_token :
    ?compil:Ode_interface_sig.Interface.compil ->
    Format.formatter -> int -> unit
  val print_chemical_species :
    ?dotnet:bool ->
    ?compil:Ode_interface_sig.Interface.compil ->
    Format.formatter -> Ode_interface_sig.Interface.chemical_species -> unit
  val print_canonic_species :
    ?dotnet:bool ->
    ?compil:Ode_interface_sig.Interface.compil ->
    Format.formatter -> Ode_interface_sig.Interface.canonic_species -> unit
  val rule_rate_convention :
    Ode_interface_sig.Interface.compil ->
    Remanent_parameters_sig.rate_convention
  val reaction_rate_convention :
    Ode_interface_sig.Interface.compil ->
    Remanent_parameters_sig.rate_convention option
  val what_do_we_count : Ode_interface_sig.Interface.compil -> Ode_args.count
  val do_we_count_in_embeddings : Ode_interface_sig.Interface.compil -> bool
  val do_we_prompt_reactions : Ode_interface_sig.Interface.compil -> bool
  val nbr_automorphisms_in_chemical_species :
    Ode_interface_sig.Interface.chemical_species -> int
  val canonic_form :
    Ode_interface_sig.Interface.chemical_species ->
    Ode_interface_sig.Interface.canonic_species
  val connected_components_of_patterns :
    Ode_interface_sig.Interface.pattern ->
    Ode_interface_sig.Interface.connected_component list
  val connected_components_of_mixture :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.cache ->
    Ode_interface_sig.Interface.mixture ->
    Ode_interface_sig.Interface.cache *
    Ode_interface_sig.Interface.chemical_species list
  type embedding
  type embedding_forest
  val lift_embedding :
    Ode_interface_sig.Interface.embedding ->
    Ode_interface_sig.Interface.embedding_forest
  val find_embeddings :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.connected_component ->
    Ode_interface_sig.Interface.chemical_species ->
    Ode_interface_sig.Interface.embedding list
  val find_all_embeddings :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.chemical_species ->
    (Ode_interface_sig.Interface.connected_component *
     Ode_interface_sig.Interface.embedding)
    list
  val compose_embeddings_unary_binary :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.pattern ->
    Ode_interface_sig.Interface.embedding list list ->
    Ode_interface_sig.Interface.chemical_species ->
    Ode_interface_sig.Interface.embedding_forest list *
    Ode_interface_sig.Interface.mixture
  module type ObsMap =
    sig
      type 'a t
      val empty : '-> 'Ode_interface_sig.Interface.ObsMap.t
      val add :
        Ode_interface_sig.Interface.connected_component ->
        '->
        'a list Ode_interface_sig.Interface.ObsMap.t ->
        'a list Ode_interface_sig.Interface.ObsMap.t
      val get :
        Ode_interface_sig.Interface.connected_component ->
        'a list Ode_interface_sig.Interface.ObsMap.t -> 'a list
      val reset :
        Ode_interface_sig.Interface.connected_component ->
        'a list Ode_interface_sig.Interface.ObsMap.t ->
        'a list Ode_interface_sig.Interface.ObsMap.t
    end
  module ObsMap : ObsMap
  val disjoint_union :
    Ode_interface_sig.Interface.compil ->
    (Ode_interface_sig.Interface.connected_component *
     Ode_interface_sig.Interface.embedding *
     Ode_interface_sig.Interface.chemical_species)
    list ->
    Ode_interface_sig.Interface.pattern *
    Ode_interface_sig.Interface.embedding_forest *
    Ode_interface_sig.Interface.mixture
  type rule_name = string
  type rule_id = int
  type rule_id_with_mode =
      Ode_interface_sig.Interface.rule_id * Rule_modes.arity *
      Rule_modes.direction
  val valid_modes :
    Ode_interface_sig.Interface.cache ->
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule ->
    Ode_interface_sig.Interface.cache *
    Ode_interface_sig.Interface.rule_id_with_mode list
  val lhs :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule_id_with_mode ->
    Ode_interface_sig.Interface.rule -> Ode_interface_sig.Interface.pattern
  val token_vector :
    Ode_interface_sig.Interface.rule ->
    ((Ode_interface_sig.Interface.connected_component array list, int)
     Alg_expr.e Locality.annot * int)
    list
  val token_vector_of_init :
    Ode_interface_sig.Interface.rule ->
    ((Ode_interface_sig.Interface.connected_component array list, int)
     Alg_expr.e Locality.annot * int)
    list
  val print_rule_id :
    Format.formatter -> Ode_interface_sig.Interface.rule_id -> unit
  val print_rule :
    ?compil:Ode_interface_sig.Interface.compil ->
    Format.formatter -> Ode_interface_sig.Interface.rule -> unit
  val print_rule_name :
    ?compil:Ode_interface_sig.Interface.compil ->
    Format.formatter -> Ode_interface_sig.Interface.rule -> unit
  val string_of_var_id :
    ?compil:Ode_interface_sig.Interface.compil ->
    ?init_mode:bool -> Loggers.t -> int -> string
  val rate :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule ->
    Ode_interface_sig.Interface.rule_id_with_mode ->
    (Ode_interface_sig.Interface.connected_component array list, int)
    Alg_expr.e Locality.annot option
  val rate_name :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule ->
    Ode_interface_sig.Interface.rule_id_with_mode ->
    Ode_interface_sig.Interface.rule_name
  val apply :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule ->
    Ode_interface_sig.Interface.embedding_forest ->
    Ode_interface_sig.Interface.mixture ->
    Ode_interface_sig.Interface.mixture
  val get_preprocessed_ast :
    Run_cli_args.t -> Ode_interface_sig.Interface.preprocessed_ast
  val get_ast : Run_cli_args.t -> Ode_interface_sig.Interface.ast
  val to_ast : Ode_interface_sig.Interface.ast -> Ast.parsing_compil
  val preprocess :
    Run_cli_args.t ->
    Ode_interface_sig.Interface.ast ->
    Ode_interface_sig.Interface.preprocessed_ast
  val get_compil :
    ?bwd_bisim:LKappa_group_action.bwd_bisim_info ->
    rule_rate_convention:Remanent_parameters_sig.rate_convention ->
    ?reaction_rate_convention:Remanent_parameters_sig.rate_convention ->
    show_reactions:bool ->
    count:Ode_args.count ->
    compute_jacobian:bool ->
    Run_cli_args.t ->
    Ode_interface_sig.Interface.preprocessed_ast ->
    Ode_interface_sig.Interface.compil
  val get_rules :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule list
  val get_variables :
    Ode_interface_sig.Interface.compil ->
    (string *
     (Ode_interface_sig.Interface.connected_component array list, int)
     Alg_expr.e Locality.annot)
    array
  val get_obs :
    Ode_interface_sig.Interface.compil ->
    (Ode_interface_sig.Interface.connected_component array list, int)
    Alg_expr.e list
  val get_obs_titles : Ode_interface_sig.Interface.compil -> string list
  val nb_tokens : Ode_interface_sig.Interface.compil -> int
  val divide_rule_rate_by :
    Ode_interface_sig.Interface.cache ->
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.rule ->
    Ode_interface_sig.Interface.cache * int
  val species_of_initial_state_env :
    Model.t ->
    Contact_map.t ->
    Pattern.PreEnv.t ->
    ('b * Primitives.elementary_rule) list ->
    Pattern.PreEnv.t * Pattern.cc list
  val species_of_initial_state :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.cache ->
    ('b * Primitives.elementary_rule) list ->
    Ode_interface_sig.Interface.cache * Pattern.cc list
  val detect_symmetries :
    Remanent_parameters_sig.parameters ->
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.cache ->
    Ode_interface_sig.Interface.chemical_species list ->
    Public_data.contact_map ->
    Ode_interface_sig.Interface.cache * Symmetries.symmetries
  val print_symmetries :
    Remanent_parameters_sig.parameters ->
    Ode_interface_sig.Interface.compil -> Symmetries.symmetries -> unit
  val get_rule_cache : Ode_interface_sig.Interface.cache -> LKappa_auto.cache
  val set_rule_cache :
    LKappa_auto.cache ->
    Ode_interface_sig.Interface.cache -> Ode_interface_sig.Interface.cache
  val get_representative :
    Remanent_parameters_sig.parameters ->
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.cache ->
    Symmetries.reduction ->
    Ode_interface_sig.Interface.chemical_species ->
    Ode_interface_sig.Interface.cache *
    Ode_interface_sig.Interface.chemical_species
  val equiv_class_of_pattern :
    Remanent_parameters_sig.parameters ->
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.cache ->
    Symmetries.reduction ->
    Ode_interface_sig.Interface.connected_component ->
    Ode_interface_sig.Interface.cache *
    (int * (Ode_interface_sig.Interface.connected_component * int) list)
  val valid_mixture :
    Ode_interface_sig.Interface.compil ->
    Ode_interface_sig.Interface.cache ->
    ?max_size:int ->
    Ode_interface_sig.Interface.mixture ->
    Ode_interface_sig.Interface.cache * bool
  val init_bwd_bisim_info :
    Ode_interface_sig.Interface.compil ->
    Symmetries.equivalence_classes -> LKappa_group_action.bwd_bisim_info
end