Lattice Land Core Library
|
#include <_pre_sinc.hpp>
Public Types | |
using | this_type = PreSInc<N, VT> |
using | dual_type = PreSDec<N, VT> |
using | value_type = battery::bitset<N, battery::LocalMemory, VT> |
template<class Mem > | |
using | atomic_type = battery::bitset<N, Mem, VT> |
using | increasing_type = this_type |
template<class F > | |
using | iresult = IResult<value_type, F> |
Static Public Member Functions | |
template<class F > | |
static CUDA iresult< F > | interpret_tell (const F &f) |
template<class F > | |
static CUDA iresult< F > | interpret_ask (const F &f) |
template<class F > | |
static CUDA iresult< F > | interpret_type (const F &f) |
static CUDA constexpr Sig | sig_order () |
static CUDA constexpr Sig | sig_strict_order () |
static CUDA constexpr value_type | top () |
static CUDA constexpr value_type | bot () |
template<class Mem1 , class Mem2 > | |
static CUDA constexpr value_type | meet (const atomic_type< Mem1 > &x, const atomic_type< Mem2 > &y) |
template<class Mem1 , class Mem2 > | |
static CUDA constexpr value_type | join (const atomic_type< Mem1 > &x, const atomic_type< Mem2 > &y) |
template<class Mem1 , class Mem2 > | |
static CUDA constexpr bool | order (const atomic_type< Mem1 > &x, const atomic_type< Mem2 > &y) |
template<class Mem1 , class Mem2 > | |
static CUDA constexpr bool | strict_order (const atomic_type< Mem1 > &x, const atomic_type< Mem2 > &y) |
static CUDA constexpr bool | is_supported_fun (Sig sig) |
template<Sig sig> | |
static CUDA constexpr value_type | fun (value_type x) |
template<Sig sig> | |
static CUDA constexpr value_type | fun (value_type x, value_type y) |
Static Public Attributes | |
static constexpr const bool | is_totally_ordered = false |
static constexpr const bool | preserve_top = true |
static constexpr const bool | preserve_bot = false |
static constexpr const bool | injective_concretization = true |
static constexpr const bool | preserve_concrete_covers = true |
static constexpr const bool | complemented = true |
static constexpr const bool | increasing = true |
static constexpr const char * | name = "SInc" |
static constexpr const bool | is_arithmetic = false |
PreSInc
is a pre-abstract universe \( \langle \mathcal{P}(\mathbb{Z}), \subseteq \rangle \) ordered by the set inclusion operation. It is used to represent constraints of the form \( x \supseteq k \) where \( k \) is a set of integers.
using lala::PreSInc< N, VT >::this_type = PreSInc<N, VT> |
using lala::PreSInc< N, VT >::dual_type = PreSDec<N, VT> |
using lala::PreSInc< N, VT >::value_type = battery::bitset<N, battery::LocalMemory, VT> |
using lala::PreSInc< N, VT >::atomic_type = battery::bitset<N, Mem, VT> |
using lala::PreSInc< N, VT >::increasing_type = this_type |
using lala::PreSInc< N, VT >::iresult = IResult<value_type, F> |
|
inlinestatic |
Interpret a constant in the lattice of increasing sets of integers according to the upset semantics (see universe.hpp for explanation). Only formulas of kind F::S(F::Z)
are supported: \( [\![ x:\mathcal{P}(\mathbb{Z}) \supseteq \{k_1,\ldots,k_n\}:\mathcal{P}(\mathbb{Z}) ]\!] = \{k_1,\ldots,k_n\} \).
|
inlinestatic |
The same as interpret_tell
because the constraint are interpreted exactly.
|
inlinestatic |
Verify if the type of a variable, introduced by an existential quantifier, is compatible with the current abstract universe. Variables of type Set(Int)
are interpreted exactly ( \( \mathcal{P}(\mathbb{Z}) = \gamma(\top) \)).
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
|
inlinestaticconstexpr |
fun: value_type -> SInc
is an abstract function on SInc
over-approximating the function denoted by sig
on the concrete domain.
sig | The signature of the function to over-approximate, can be either CARD or HULL . |
x | The argument of the function, which is a constant value in the underlying universe of discourse. |
|
inlinestaticconstexpr |
fun: value_type X value_type -> ZInc
is similar to its unary version but with an arity of 2.
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |