Goblint_lib.SharedFunctionsRelational value domain utilities.
module M = Messagesval int_of_scalar :
?scalewith:Z.t ->
?round:[< `Ceil | `Floor ] ->
GobApron.Scalar.t ->
Z.t optionmodule type ConvertArg = sig ... endmodule type SV = RelationDomain.RV with type t = GobApron.Var.ttype unsupported_cilExp = | Var_not_found of CilType.Varinfo.tVariable not found in Apron environment.
*)| Cast_not_injective of CilType.Typ.tCast is not injective, i.e. may under-/overflow.
*)| Exp_not_supported of GoblintCil.exp| OverflowMay overflow according to Apron bounds.
*)| Exp_typeOf of exnExpression type could not be determined.
*)| BinOp_not_supported of GoblintCil.binopBinOp constructor not supported.
*)| Ikind_non_integer of stringException during trying to get ikind of a non-integer typed expression
*)val pp_unsupported_cilExp :
Ppx_deriving_runtime.Format.formatter ->
unsupported_cilExp ->
Ppx_deriving_runtime.unitval show_unsupported_cilExp : unsupported_cilExp -> Ppx_deriving_runtime.stringmodule type ConvBounds = sig ... endInterface for Bounds which calculates bounds for expressions and is used inside the - Convert module.
module ApronOfCil
(V : SV)
(Bounds : ConvBounds)
(Arg : ConvertArg)
(Tracked : RelationDomain.Tracked) :
sig ... endConversion from CIL expressions to Apron. This is used by the domains "affine equalities" and "linear two variable equalities". It also handles the overflow through the flag "no_ov". For this reason it was divided from the Convert module for the pure apron domains "ApronOfCilForApronDomains",
module CilOfApron (V : SV) : sig ... endConversion from Apron to CIL expressions.
module Convert
(V : SV)
(Bounds : ConvBounds)
(Arg : ConvertArg)
(Tracked : RelationDomain.Tracked) :
sig ... endConversion between CIL expressions and Apron.
module type AbstractRelationalDomainRepresentation = sig ... endmodule VarManagementOps
(RelDomain : AbstractRelationalDomainRepresentation) :
sig ... endmodule type AssertionRelS = sig ... endA more specific module type for RelationDomain.RelD2 with various apron elements. It is designed to be the interface for the D2 modules in affineEqualityDomain and apronDomain and serves as a functor argument for AssertionModule.
module Tracked = RelationCil.Trackedmodule AssertionModule
(V : SV)
(AD : AssertionRelS)
(Arg : ConvertArg) :
sig ... endmodule Mpqf : sig ... end