Module TOPLlib.ToplAst
val compare_property_name : property_name -> property_name -> int
val hash_fold_property_name : Ppx_hash_lib.Std.Hash.state -> property_name -> Ppx_hash_lib.Std.Hash.state
val hash_property_name : property_name -> Ppx_hash_lib.Std.Hash.hash_value
val property_name_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> property_name
val sexp_of_property_name : property_name -> Ppx_sexp_conv_lib.Sexp.t
val compare_register_name : register_name -> register_name -> int
type variable_name
= string
type constant
=
|
LiteralInt of int
type value
=
|
Constant of constant
|
Register of register_name
|
Binding of variable_name
type binop
=
|
OpEq
|
OpNe
|
OpGe
|
OpGt
|
OpLe
|
OpLt
type predicate
=
|
Binop of binop * value * value
|
Value of value
type condition
= predicate list
type assignment
= register_name * variable_name
type procedure_name_pattern
= string
a regular expression
type label_pattern
=
|
ArrayWritePattern
|
ProcedureNamePattern of procedure_name_pattern
type label
=
{
arguments : variable_name list option;
condition : condition;
action : assignment list;
pattern : label_pattern;
}
type vertex
= string
val compare_vertex : vertex -> vertex -> int
val hash_fold_vertex : Ppx_hash_lib.Std.Hash.state -> vertex -> Ppx_hash_lib.Std.Hash.state
val hash_vertex : vertex -> Ppx_hash_lib.Std.Hash.hash_value
val vertex_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> vertex
val sexp_of_vertex : vertex -> Ppx_sexp_conv_lib.Sexp.t
type transition
=
{
source : vertex;
target : vertex;
label : label option;
}
type t
=
{
name : property_name;
message : string option;
prefixes : string list;
nondet : string list;
transitions : transition list;
}