LustreContracttype svar = {pos : Lib.position;Position of the original expression.
*)num : int;Number given to it at parse time.
If this svar is an assumption / a guarantee, it means it's the num assumption / guarantee in the contract it's from.
If this svar is a require / an ensure, it means it's the num require / ensure of the mode it's from.
name : string option;Optional name for an assume or a guarantee
*)src_expr : string;Source expression of this contract variable
*)svar : StateVar.t;Actual state variable.
*)scope : (Lib.position * string) list;Succession of imports leading to this precise state variable.
*)}Wraps a state variable for use in a contract.
val mk_svar :
Lib.position ->
int ->
string option ->
StateVar.t ->
(Lib.position * string) list ->
string ->
svarCreates a svar.
val pos_of_svar : svar -> Lib.positionReturns the position of the svar
val prop_name_of_svar : svar -> string -> string -> stringGenerates a property name.
prop_name_of_svar svar kind name generates a property name with the trace of contract call / position pairs. kind and name are concatenated and placed between the trace and the svar position and number.
type mode = {name : LustreIdent.t;Name of the mode.
*)pos : Lib.position;Position of the mode.
*)path : string list;Path of contract imports to this node.
*)requires : svar list;Requires of the mode.
*)ensures : svar list;Ensures of the mode.
*)candidate : bool;Is this mode a candidate?.
*)}Type of modes.
val mk_mode :
LustreIdent.t ->
Lib.position ->
string list ->
svar list ->
svar list ->
bool ->
modeCreates a mode.
type t = {assumes : svar list;Assumptions of the contract.
*)sofar_assump : StateVar.t option;State variable to model Sofar(/\ assumes), if any
*)guarantees : (svar * bool) list;Guarantees of the contract (boolean is the candidate flag).
modes : mode list;Modes of the contract.
*)}Type of contracts.
val mk : svar list -> StateVar.t option -> (svar * bool) list -> mode list -> tCreates a new contract from a set of assumes, a set of guarantess, and a list of modes.
val svars_of : ?with_sofar_var:bool -> t -> StateVar.StateVarSet.tval pp_print_svar : Stdlib.Format.formatter -> svar -> unitPretty prints a svar wrapper.
val pp_print_svar_debug : Stdlib.Format.formatter -> svar -> unitPretty prints a svar wrapper for debugging.
val pp_print_mode : bool -> Stdlib.Format.formatter -> mode -> unitPretty prints a mode.
val pp_print_mode_debug : bool -> Stdlib.Format.formatter -> mode -> unitPretty prints a mode for debugging.
val pp_print_contract : bool -> Stdlib.Format.formatter -> t -> unitPretty prints a contract.
val pp_print_contract_debug : bool -> Stdlib.Format.formatter -> t -> unitPretty prints a contract for debugging.
module ModeTrace : sig ... endMode traces as cex.