Module ASTLanguage.CTL

type clause =
| CLet of ALVar.formula_id * ALVar.t list * CTLTypes.t

Let clause: let id = definifion;

| CSet of ALVar.keyword * CTLTypes.t

Set clause: set id = definition

| CDesc of ALVar.keyword * string

Description clause eg: set message = "..."

| CPath of [ `WhitelistPath | `BlacklistPath ] * ALVar.t list

"set" clauses are used for defining mandatory variables that will be used by when reporting issues: eg for defining the condition.

"desc" clauses are used for defining the error message, the suggestion, the severity.

"let" clauses are used to define temporary formulas which are then used to abbreviate the another formula. For example

    let f = a And B

    set formula = f OR f

    set message = "bla"
type 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 -> unit
val eval_formula : ?⁠keep_witness:bool -> CTLTypes.t -> Ctl_parser_types.ast_node -> CLintersContext.context -> Ctl_parser_types.ast_node option

return the evaluation of the formula and a witness

val save_dotty_when_in_debug_mode : IBase.SourceFile.t -> unit
val next_state_via_transition : Ctl_parser_types.ast_node -> CTLTypes.transitions -> Ctl_parser_types.ast_node list
val create_ctl_evaluation_tracker : IBase.SourceFile.t -> unit