package codex
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=bc7266a140c6886add673ede90e335d3
sha512=8da42c0ff2c1098c5f9cb2b5b43b306faf7ac93b8f5ae00c176918cee761f249ff45b29309f31a05bbcf6312304f86a0d5a000eb3f1094d3d3c2b9b4c7f5c386
doc/codex.single_value_abstraction/Single_value_abstraction/index.html
Module Single_value_abstractionSource
A Single-value abstraction consists of Operator over Lattices.
There are two kinds of transfer functions:
- Forward transfer functions take lattice as arguments and returns a lattice as result;
- Backward transfer functions take lattice as arguments, a lattice as the known result, and returns a new version of the arguments that match the result and other argument values.
The transfer functions are multi-sorted, and we have an implicit order on the types:
- Boolean values are standalone;
- Enum values depend on boolean;
- Integer values depend on boolean;
- Bitvector values depend on boolean (it could also depend on integer).
- (Block and Memory are currently not used).
A basic abstraction, featuring only transfer function over abstract booleans.
The lattice for four-valued boolean logic. It represents the powerset of {true,false}. See Lattices.Quadrivalent.
Our main bitvector abstraction: interval and congruence abstraction, for both the signed and unsigned interpretation of bitvectors.
The most precise abstraction for finite enumerations: a bitfield, with a bit for each possible value, compactly representing a set of values.
A bitvector abstraction representing information known about the known and unknown bits.
Code when you need new transfer functions that fail when they are called. Start here when you implement a new single-value abstraction.