package kappa-library

  1. Overview
  2. Docs

What users wrote when writing its rules

All names refers to the one from the signature

type agent_name = int
type site_name = int
type internal_state = int
type binding_type = agent_name * site_name
type abstract = Matching.Agent.t

in a rule

in a simulation state

type 'a site = 'a * site_name
type 'a test =
  1. | Is_Here of 'a
  2. | Has_Internal of 'a site * internal_state
  3. | Is_Free of 'a site
  4. | Is_Bound of 'a site
  5. | Has_Binding_type of 'a site * binding_type
  6. | Is_Bound_to of 'a site * 'a site
type 'a action =
  1. | Create of 'a * (site_name * internal_state option) list
  2. | Mod_internal of 'a site * internal_state
  3. | Bind of 'a site * 'a site
  4. | Bind_to of 'a site * 'a site
  5. | Free of 'a site
  6. | Remove of 'a
val sort_concrete_action_list : concrete action list -> concrete action list
val sort_concrete_action_list_reverse : concrete action list -> concrete action list
val sort_abstract_action_list : concrete action list -> concrete action list
val sort_abstract_action_list_reverse : concrete action list -> concrete action list
type 'a binding_state =
  1. | ANY
  2. | FREE
  3. | BOUND
  4. | BOUND_TYPE of binding_type
  5. | BOUND_to of 'a site
type 'a event = {
  1. tests : 'a test list list;
    (*

    The tests written in the rule (pattern by pattern)

    *)
  2. actions : 'a action list;
    (*

    The modifications written in the rule

    *)
  3. side_effects_src : ('a site * 'a binding_state) list;
    (*

    the site of the agents mentioned in the rule where there is a side effects

    *)
  4. side_effects_dst : 'a site list;
    (*

    the site of agents not mentionned in the rule that have been freed by side effect

    *)
  5. 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_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:Kappa_site_graphs.Signature.s -> Format.formatter -> concrete test -> unit
val print_concrete_action : ?sigs:Kappa_site_graphs.Signature.s -> Format.formatter -> concrete action -> unit
val print_concrete_binding_state : ?sigs:Kappa_site_graphs.Signature.s -> Format.formatter -> concrete binding_state -> unit
val json_dictionnary : string
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 : (Buffer.t -> 'a -> unit) -> Buffer.t -> 'a test -> unit
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 : (Buffer.t -> 'a -> unit) -> Buffer.t -> 'a action -> unit
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 : (Buffer.t -> 'a -> unit) -> Buffer.t -> 'a event -> unit
OCaml

Innovation. Community. Security.