module Instantiation:sig
..end
typeagent_name =
int
typesite_name =
int
typeinternal_state =
int
typebinding_type =
agent_name * site_name
typeabstract =
Matching.Agent.t
typeconcrete =
Agent.t
type'a
site ='a * site_name
type 'a
test =
| |
Is_Here of |
| |
Has_Internal of |
| |
Is_Free of |
| |
Is_Bound of |
| |
Has_Binding_type of |
| |
Is_Bound_to of |
type 'a
action =
| |
Create of |
| |
Mod_internal of |
| |
Bind of |
| |
Bind_to of |
| |
Free of |
| |
Remove of |
type 'a
binding_state =
| |
ANY |
| |
FREE |
| |
BOUND |
| |
BOUND_TYPE of |
| |
BOUND_to of |
type 'a
event = {
|
tests : |
(* |
The tests written in the rule (pattern by pattern)
| *) |
|
actions : |
(* |
The modifications written in the rule
| *) |
|
side_effects_src : |
(* |
the site of the agents mentioned in the rule where there is a side
effects
| *) |
|
side_effects_dst : |
(* |
the site of agents not mentionned in the rule that have been freed
by side effect
| *) |
|
connectivity_tests : |
(* |
witness that patterns where connected (unary instances only of course)
| *) |
val empty_event : 'a event
val rename_abstract_test : int ->
Renaming.t ->
abstract test ->
abstract test
val rename_abstract_action : int ->
Renaming.t ->
abstract action ->
abstract action
val rename_abstract_event : int ->
Renaming.t ->
abstract event ->
abstract event
val rename_abstract_side_effect : int ->
Renaming.t ->
(Matching.Agent.t * 'a) * Matching.Agent.t binding_state ->
(Matching.Agent.t * 'a) * Matching.Agent.t binding_state
val concretize_test : Matching.t * int Mods.IntMap.t ->
abstract test ->
concrete test
val concretize_action : Matching.t * int Mods.IntMap.t ->
abstract action ->
concrete action
val try_concretize_action : Matching.t * int Mods.IntMap.t ->
abstract action ->
concrete action option
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 : Matching.t * int Mods.IntMap.t ->
abstract event ->
concrete event
val matching_abstract_concrete : abstract event ->
concrete event -> Renaming.t option
val subst_map_agent_in_concrete_test : (int -> int) ->
concrete test ->
concrete test
val subst_agent_in_concrete_test : int ->
int ->
concrete test ->
concrete test
val subst_map_agent_in_concrete_action : (int -> int) ->
concrete action ->
concrete action
val subst_agent_in_concrete_action : int ->
int ->
concrete action ->
concrete action
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 subst_map_agent_in_concrete_event : (int -> int) ->
concrete event ->
concrete event
val subst_map2_agent_in_concrete_event : (int -> int) ->
(int -> int) ->
concrete event ->
concrete event
val subst_agent_in_concrete_event : int ->
int ->
concrete event ->
concrete event
val print_concrete_test : ?sigs:Signature.s ->
Format.formatter -> concrete test -> unit
val print_concrete_action : ?sigs:Signature.s ->
Format.formatter -> concrete action -> unit
val print_concrete_binding_state : ?sigs:Signature.s ->
Format.formatter ->
concrete binding_state -> unit
val test_to_json : ('a -> Yojson.Basic.json) -> 'a test -> Yojson.Basic.json
val test_of_json : (Yojson.Basic.json -> 'a) -> Yojson.Basic.json -> 'a test
val action_to_json : ('a -> Yojson.Basic.json) -> 'a action -> Yojson.Basic.json
val action_of_json : (Yojson.Basic.json -> 'a) -> Yojson.Basic.json -> 'a action
val event_to_json : ('a -> Yojson.Basic.json) -> 'a event -> Yojson.Basic.json
val event_of_json : (Yojson.Basic.json -> 'a) -> Yojson.Basic.json -> 'a event