type transitions
=
| AccessorForProperty of InferModules.ALVar.alexp | (** decl to decl *) |
| Body | (** decl to stmt *) |
| FieldName of InferModules.ALVar.alexp | (** stmt to stmt, decl to decl *) |
| Fields | (** stmt to stmt, decl to decl *) |
| InitExpr | (** decl to stmt *) |
| Super | (** decl to decl *) |
| ParameterName of InferModules.ALVar.alexp | (** stmt to stmt, decl to decl *) |
| ParameterPos of InferModules.ALVar.alexp | (** stmt to stmt, decl to decl *) |
| Parameters | (** stmt to stmt, decl to decl *) |
| Cond | |
| PointerToDecl | (** stmt to decl *) |
| Protocol | (** decl to decl *) |
Transition labels used for example to switch from decl to stmt
include sig ... end
val compare_transitions : transitions ‑> transitions ‑> int
type t
=
| True | |
| False | |
| Atomic of InferModules.CPredicates.t | (** Atomic formula *) |
| Not of t | |
| And of t * t | |
| Or of t * t | |
| Implies of t * t | |
| InNode of InferModules.ALVar.alexp list * t | |
| AX of transitions option * t | (** AX phi <=> for all children of the current node phi holds *) |
| EX of transitions option * t | (** EX phi <=> exist a child of the current node such that phi holds *) |
| AF of transitions option * t | (** AF phi <=> for all path from the current node there is a descendant where phi holds *) |
| EF of transitions option * t | (** EF phi <=> there exits a a path from the current node with a descendant where phi hold *) |
| AG of transitions option * t | (** AG phi <=> for all discendant of the current node phi hold *) |
| EG of transitions option * t | (** EG phi <=> there exists a path (of descendants) from the current node where phi hold at each node of the path *) |
| AU of transitions option * t * t | (** AU(phi1, phi2) <=> for all paths from the current node phi1 holds in every node until ph2 holds *) |
| EU of transitions option * t * t | (** EU(phi1, phi2) <=> there exists a path from the current node such that phi1 holds until phi2 holds *) |
| EH of InferModules.ALVar.alexp list * t | (** EH |
| ET of InferModules.ALVar.alexp list * transitions option * t | (** ET |
A ctl formula
type clause
=
| CLet of InferModules.ALVar.formula_id * InferModules.ALVar.t list * t |
| CSet of InferModules.ALVar.keyword * t |
| CDesc of InferModules.ALVar.keyword * string |
| CPath of [ `WhitelistPath | `BlacklistPath ] * InferModules.ALVar.t list |
type al_file
=
{
import_files : string list; |
global_macros : clause list; |
global_paths : (string * InferModules.ALVar.alexp list) list; |
checkers : ctl_checker list; |
}
val print_checker : ctl_checker ‑> unit
val eval_formula : t ‑> InferModules.Ctl_parser_types.ast_node ‑> InferModules.CLintersContext.context ‑> InferModules.Ctl_parser_types.ast_node option
return the evaluation of the formula and a witness
val save_dotty_when_in_debug_mode : InferBase.SourceFile.t ‑> unit
val next_state_via_transition : InferModules.Ctl_parser_types.ast_node ‑> transitions ‑> InferModules.Ctl_parser_types.ast_node list
val create_ctl_evaluation_tracker : InferBase.SourceFile.t ‑> unit
module Debug : sig ... end