Kappa_terms.Instantiation
What users wrote when writing its rules
All names refers to the one from the signature
type binding_type = agent_name * site_name
type abstract = Matching.Agent.t
in a rule
type concrete = Kappa_site_graphs.Agent.t
in a simulation state
type 'a site = 'a * site_name
type 'a test =
| Is_Here of 'a
| Has_Internal of 'a site * internal_state
| Is_Free of 'a site
| Is_Bound of 'a site
| Has_Binding_type of 'a site * binding_type
| Is_Bound_to of 'a site * 'a site
type 'a action =
| Create of 'a * (site_name * internal_state option) list
| Mod_internal of 'a site * internal_state
| Bind of 'a site * 'a site
| Bind_to of 'a site * 'a site
| Free of 'a site
| Remove of 'a
type 'a event = {
tests : 'a test list list;
The tests written in the rule (pattern by pattern)
*)actions : 'a action list;
The modifications written in the rule
*)side_effects_src : ('a site * 'a binding_state) list;
the site of the agents mentioned in the rule where there is a side effects
*)side_effects_dst : 'a site list;
the site of agents not mentionned in the rule that have been freed by side effect
*)connectivity_tests : 'a test list;
witness that patterns where connected (unary instances only of course)
*)}
val empty_event : 'a event
val rename_abstract_test :
debug_mode:bool ->
int ->
Kappa_data_structures.Renaming.t ->
abstract test ->
abstract test
val rename_abstract_action :
debug_mode:bool ->
int ->
Kappa_data_structures.Renaming.t ->
abstract action ->
abstract action
val rename_abstract_event :
debug_mode:bool ->
int ->
Kappa_data_structures.Renaming.t ->
abstract event ->
abstract event
val rename_abstract_side_effect :
debug_mode:bool ->
int ->
Kappa_data_structures.Renaming.t ->
((Matching.Agent.t * 'a) * Matching.Agent.t binding_state) ->
(Matching.Agent.t * 'a) * Matching.Agent.t binding_state
val concretize_test :
debug_mode:bool ->
(Matching.t * int Kappa_data_structures.Mods.IntMap.t) ->
abstract test ->
concrete test
val concretize_action :
debug_mode:bool ->
(Matching.t * int Kappa_data_structures.Mods.IntMap.t) ->
abstract action ->
concrete action
val try_concretize_action :
debug_mode:bool ->
(Matching.t * int Kappa_data_structures.Mods.IntMap.t) ->
abstract action ->
concrete action option
Same than concretize_action
, except that it returns None
if the provided injection's domain does not contain a fresh agent that is involved in the action that is being concretized.
val concretize_event :
debug_mode:bool ->
(Matching.t * int Kappa_data_structures.Mods.IntMap.t) ->
abstract event ->
concrete event
val matching_abstract_concrete :
debug_mode:bool ->
abstract event ->
concrete event ->
Kappa_data_structures.Renaming.t option
val subst_map_agent_in_concrete_side_effect :
(int -> int) ->
(concrete site * concrete binding_state) ->
concrete site * concrete binding_state
val subst_agent_in_concrete_side_effect :
int ->
int ->
(concrete site * concrete binding_state) ->
concrete site * concrete binding_state
val print_concrete_test :
?sigs:Kappa_site_graphs.Signature.s ->
Stdlib.Format.formatter ->
concrete test ->
unit
val print_concrete_action :
?sigs:Kappa_site_graphs.Signature.s ->
Stdlib.Format.formatter ->
concrete action ->
unit
val print_concrete_binding_state :
?sigs:Kappa_site_graphs.Signature.s ->
Stdlib.Format.formatter ->
concrete binding_state ->
unit
val test_to_json : ('a -> Yojson.Basic.t) -> 'a test -> Yojson.Basic.t
val test_of_json : (Yojson.Basic.t -> 'a) -> Yojson.Basic.t -> 'a test
val write_test :
(Stdlib.Buffer.t -> 'a -> unit) ->
Stdlib.Buffer.t ->
'a test ->
unit
val read_test :
(Yojson.Basic.lexer_state -> Stdlib.Lexing.lexbuf -> 'a) ->
Yojson.Basic.lexer_state ->
Stdlib.Lexing.lexbuf ->
'a test
val action_to_json : ('a -> Yojson.Basic.t) -> 'a action -> Yojson.Basic.t
val action_of_json : (Yojson.Basic.t -> 'a) -> Yojson.Basic.t -> 'a action
val write_action :
(Stdlib.Buffer.t -> 'a -> unit) ->
Stdlib.Buffer.t ->
'a action ->
unit
val read_action :
(Yojson.Basic.lexer_state -> Stdlib.Lexing.lexbuf -> 'a) ->
Yojson.Basic.lexer_state ->
Stdlib.Lexing.lexbuf ->
'a action
val event_to_json : ('a -> Yojson.Basic.t) -> 'a event -> Yojson.Basic.t
val event_of_json : (Yojson.Basic.t -> 'a) -> Yojson.Basic.t -> 'a event
val write_event :
(Stdlib.Buffer.t -> 'a -> unit) ->
Stdlib.Buffer.t ->
'a event ->
unit
val read_event :
(Yojson.Basic.lexer_state -> Stdlib.Lexing.lexbuf -> 'a) ->
Yojson.Basic.lexer_state ->
Stdlib.Lexing.lexbuf ->
'a event