sig
type switching = Linked of int | Freed | Maintained | Erased
type rule_internal =
I_ANY
| I_ANY_CHANGED of int
| I_ANY_ERASED
| I_VAL_CHANGED of int * int
| I_VAL_ERASED of int
type rule_agent = {
ra_type : int;
ra_erased : bool;
ra_ports :
((int, int * int) Ast.link Locality.annot * LKappa.switching) array;
ra_ints : LKappa.rule_internal array;
ra_syntax :
(((int, int * int) Ast.link Locality.annot * LKappa.switching) array *
LKappa.rule_internal array)
option;
}
type rule_mixture = LKappa.rule_agent list
val forbid_modification : Locality.t -> 'a option -> unit
val several_internal_states : Locality.t -> 'a
val not_enough_specified :
status:string -> side:string -> string -> string * Locality.t -> 'a
val several_occurence_of_site : string -> string * Locality.t -> 'a
val link_only_one_occurence : int -> Locality.t -> 'a
val agent_to_erased : Signature.s -> LKappa.rule_agent -> LKappa.rule_agent
val to_erased : Signature.s -> LKappa.rule_mixture -> LKappa.rule_mixture
val to_maintained : LKappa.rule_mixture -> LKappa.rule_mixture
val to_raw_mixture : Signature.s -> LKappa.rule_mixture -> Raw_mixture.t
val copy_rule_agent : LKappa.rule_agent -> LKappa.rule_agent
val print_rule_mixture :
Signature.s ->
ltypes:bool ->
Raw_mixture.t -> Format.formatter -> LKappa.rule_agent list -> unit
type 'a rule_agent_counters = {
ra : 'a;
ra_counters : (Ast.counter * LKappa.switching) option array;
}
type rule = {
r_mix : LKappa.rule_mixture;
r_created : Raw_mixture.t;
r_delta_tokens :
((LKappa.rule_mixture, int) Alg_expr.e Locality.annot * int) list;
r_rate : (LKappa.rule_mixture, int) Alg_expr.e Locality.annot;
r_un_rate :
((LKappa.rule_mixture, int) Alg_expr.e Locality.annot *
(LKappa.rule_mixture, int) Alg_expr.e Locality.annot option)
option;
r_editStyle : bool;
}
val print_rates :
Signature.s ->
(Format.formatter -> int -> unit) ->
(Format.formatter -> int -> unit) ->
Format.formatter -> LKappa.rule -> unit
val print_rule :
full:bool ->
Signature.s ->
(Format.formatter -> int -> unit) ->
(Format.formatter -> int -> unit) ->
Format.formatter -> LKappa.rule -> unit
val rule_to_json :
filenames:int Mods.StringMap.t -> LKappa.rule -> Yojson.Basic.json
val rule_of_json :
filenames:string array -> Yojson.Basic.json -> LKappa.rule
end