Module InferModules.CTL
type transitions=|AccessorForProperty of ALVar.alexpdecl to decl
|Bodydecl to stmt
|FieldName of ALVar.alexpstmt to stmt, decl to decl
|Fieldsstmt to stmt, decl to decl
|InitExprdecl to stmt
|Superdecl to decl
|ParameterName of ALVar.alexpstmt to stmt, decl to decl
|ParameterPos of ALVar.alexpstmt to stmt, decl to decl
|Parametersstmt to stmt, decl to decl
|Cond|PointerToDeclstmt to decl
|Protocoldecl to decl
|SourceExprTransition labels used for example to switch from decl to stmt
val compare_transitions : transitions -> transitions -> int
type t=|True|False|Atomic of CPredicates.tAtomic formula
|Not of t|And of t * t|Or of t * t|Implies of t * t|InNode of ALVar.alexp list * t|AX of transitions option * tAX phi <=> for all children of the current node phi holds
|EX of transitions option * tEX phi <=> exist a child of the current node such that phi holds
|AF of transitions option * tAF phi <=> for all path from the current node there is a descendant where phi holds
|EF of transitions option * tEF phi <=> there exits a a path from the current node with a descendant where phi hold
|AG of transitions option * tAG phi <=> for all discendant of the current node phi hold
|EG of transitions option * tEG 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 * tAU(phi1, phi2) <=> for all paths from the current node phi1 holds in every node until ph2 holds
|EU of transitions option * t * tEU(phi1, phi2) <=> there exists a path from the current node such that phi1 holds until phi2 holds
|EH of ALVar.alexp list * tEH
classesphi <=> there exists a node defining a super class in the hierarchy of the class defined by the current node (if any) where phi holds|ET of ALVar.alexp list * transitions option * tET
Tlphi <=> there exists a descentant an of the current node such that an is of type in set T making a transition to a node an' via label l, such that in an phi holds.|InObjCClass of t * tA ctl formula
type clause=|CLet of ALVar.formula_id * ALVar.t list * tLet clause: let id = definifion;
|CSet of ALVar.keyword * tSet clause: set id = definition
|CDesc of ALVar.keyword * stringDescription clause eg: set message = "..."
|CPath of [ `WhitelistPath | `BlacklistPath ] * ALVar.t listtype ctl_checker={id : string;Checker's id
definitions : clause list;A list of let/set definitions
}type al_file={import_files : string list;global_macros : clause list;global_paths : (string * ALVar.alexp list) list;checkers : ctl_checker list;}
val print_checker : ctl_checker -> unitval eval_formula : t -> Ctl_parser_types.ast_node -> CLintersContext.context -> Ctl_parser_types.ast_node optionreturn the evaluation of the formula and a witness
val save_dotty_when_in_debug_mode : InferBase.SourceFile.t -> unitval next_state_via_transition : Ctl_parser_types.ast_node -> transitions -> Ctl_parser_types.ast_node listval create_ctl_evaluation_tracker : InferBase.SourceFile.t -> unit
module Debug : sig ... end