package nuscr
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=c5a419fd1fdea78fb63b3a3c335b0e6b0f2b08d65b79870565bdcc0f997bc728
sha512=83ef593ed514eeef1b10069af54562833d617d1c338c5adaf82ee5c3ea7ec4569b3643fcbb237b3cb79ce2f579094cbd17217efa5f4e522bd20f67e1df3a7dbd
doc/nuscr.lib/Nuscrlib/Efsm/index.html
Module Nuscrlib.Efsm
Endpoint finite state machines (EFSM)
type refinement_action_annot = {
silent_vars : (Names.VariableName.t * Expr.payload_type) Base.list;
(*List of silent variables and their types
*)rec_expr_updates : Expr.t Base.list;
(*List of updates to recursion variables
*)
}
Annotation for refined actions, used when RefinementTypes pragma is enabled
val compare_refinement_action_annot :
refinement_action_annot ->
refinement_action_annot ->
Ppx_deriving_runtime.int
val sexp_of_refinement_action_annot :
refinement_action_annot ->
Sexplib0.Sexp.t
type action =
| SendA of Names.RoleName.t * Gtype.message * refinement_action_annot
(*Sending a
*)message
toname
| RecvA of Names.RoleName.t * Gtype.message * refinement_action_annot
(*Receiving a
*)message
fromname
| Epsilon
(*Not used
*)
Transitions in the EFSM
type state = Base.int
Type of states in EFSM
module G :
Graph.Sig.P
with type V.t = state
and type E.label = action
and type E.t = state * action * state
EFSM graph representation
type rec_var_info =
(Base.bool * Gtype.rec_var) Base.list Base.Map.M(Base.Int).t
Information regarding recursion variables
type t = G.t * rec_var_info
Type of the EFSM, rec_var_info is only populated when refinement types are enabled
val show : t -> Base.string
Produce a DOT representation of EFSM, which can be visualised by Graphviz
val state_action_type :
G.t ->
state ->
[ `Send of Names.RoleName.t
| `Recv of Names.RoleName.t
| `Mixed
| `Terminal ]
Returns whether a state in the EFSM is a sending state (with only SendA
outgoing actions), a receiving state (with only RecvA
outgoing actions), a mixed state (with a mixture of SendA
and RecvA
actions), or a terminal state (without outgoing actions)
val find_all_payloads : G.t -> Base.Set.M(Names.PayloadTypeName).t
val find_all_roles : G.t -> Base.Set.M(Names.RoleName).t