Goblint_lib.LinearTwoVarEqualityDomainOCaml implementation of the linear two-variable equality domain.
Abstract states in this domain are represented by structs containing an array and an apron environment. The arrays are modeled as proposed in the paper: Each variable is assigned to an index and each array element represents a linear relationship that must hold at the corresponding program point. The apron environment is hereby used to organize the order of columns and variables.
module M = Messagesmodule Mpqf = SharedFunctions.Mpqfmodule Rhs : sig ... endmodule EqualitiesConjunction : sig ... endmodule VarManagement : sig ... endVarManagement defines the type t of the affine equality domain (a record that contains an optional matrix and an apron environment) and provides the functions needed for handling variables (which are defined by RelationDomain.D2) such as add_vars, remove_vars. Furthermore, it provides the function simplified_monomials_from_texp that converts an apron expression into a list of monomials of reference variables and a constant offset
module ExpressionBounds :
SharedFunctions.ConvBounds with type t = VarManagement.tmodule D : sig ... endmodule D2 : RelationDomain.RD with type var = GobApron.Var.t