Skip to content
Snippets Groups Projects
Commit 34264f5b authored by Julien Signoles's avatar Julien Signoles
Browse files

[e-acsl] comments

parent 76c70a33
No related branches found
No related tags found
No related merge requests found
...@@ -15,10 +15,13 @@ ...@@ -15,10 +15,13 @@
# E-ACSL: the Whole E-ACSL plug-in # E-ACSL: the Whole E-ACSL plug-in
############################################################################### ###############################################################################
- E-ACSL [2012/01/20] Use GMP arithmetics only when required
(i.e. mostly never in practice).
################################### ###################################
Plugin E-ACSL 0.1 Nitrogen_20111001 Plugin E-ACSL 0.1 Nitrogen_20111001
################################### ###################################
- E-ACSL [2012/01/06] First release for the Hi-Lite FUI9 project. - E-ACSL [2012/01/06] First release for the Hi-Lite FUI9 project.
################################### ###################################
...@@ -29,7 +29,7 @@ module BI = My_bigint ...@@ -29,7 +29,7 @@ module BI = My_bigint
let is_representable n _k _s = BI.ge n BI.min_int64 && BI.le n BI.max_int64 let is_representable n _k _s = BI.ge n BI.min_int64 && BI.le n BI.max_int64
(******************************************************************************) (******************************************************************************)
(** Type Lattice *) (** Type Definitions: Intervals *)
(******************************************************************************) (******************************************************************************)
type eacsl_typ = type eacsl_typ =
......
...@@ -26,21 +26,37 @@ open Cil_types ...@@ -26,21 +26,37 @@ open Cil_types
(** {2 Typing} *) (** {2 Typing} *)
(******************************************************************************) (******************************************************************************)
val typ_of_term: term -> typ
val type_named_predicate: predicate named -> unit val type_named_predicate: predicate named -> unit
(** Compute the type of each term of the given predicate. *)
val type_term: term -> unit val type_term: term -> unit
(** Compute the type of the given term. *)
val typ_of_term: term -> typ
(** Get the type of the given term. Must have been previously computed. *)
val unsafe_set_term: term -> typ -> unit val unsafe_set_term: term -> typ -> unit
(** Modify the type of the given term. No verification is done to check that the
new type is correct. *)
val clear: unit -> unit val clear: unit -> unit
(** Remove all the previously computed types. *)
(******************************************************************************) (******************************************************************************)
(** {2 Subtyping} *) (** {2 Subtyping} *)
(******************************************************************************) (******************************************************************************)
val principal_type: term -> term -> typ val principal_type: term -> term -> typ
(** Get the principal type of the two given terms, that is the type which may
contain both of them. Their types must have been previously computed. *)
val context_sensitive: val context_sensitive:
?loc:location -> Env.t -> typ -> bool -> term option -> exp -> ?loc:location -> Env.t -> typ -> bool -> term option -> exp ->
exp * Env.t exp * Env.t
(** [context_sensitive env ty is_mpz_string t_opt e] converts [e] in [env] in
such a way that it becomes usable in a context of type [ty]. [t_opt], if
any, is a term denoting by [e]. [is_mpz_string] is [true] iff [e] is a
string denoting a MPZ integer. *)
val is_representable: My_bigint.t -> ikind -> string option -> bool val is_representable: My_bigint.t -> ikind -> string option -> bool
(** Is the given constant representable? (** Is the given constant representable?
...@@ -53,6 +69,8 @@ val is_representable: My_bigint.t -> ikind -> string option -> bool ...@@ -53,6 +69,8 @@ val is_representable: My_bigint.t -> ikind -> string option -> bool
val compute_quantif_guards_ref val compute_quantif_guards_ref
: (predicate named -> logic_var list -> predicate named -> : (predicate named -> logic_var list -> predicate named ->
(term * relation * logic_var * relation * term) list) ref (term * relation * logic_var * relation * term) list) ref
(** Forward reference. *)
(* (*
Local Variables: Local Variables:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment