|
constexpr | CartesianProduct ()=default |
|
CUDA constexpr | CartesianProduct (const As &... as) |
|
CUDA constexpr | CartesianProduct (As &&... as) |
|
CUDA constexpr | CartesianProduct (typename As::value_type... vs) |
|
template<class... Bs> |
CUDA constexpr | CartesianProduct (const CartesianProduct< Bs... > &other) |
|
template<class... Bs> |
CUDA constexpr | CartesianProduct (CartesianProduct< Bs... > &&other) |
|
template<class... Bs> |
CUDA constexpr this_type & | operator= (const CartesianProduct< Bs... > &other) |
|
CUDA constexpr this_type & | operator= (const this_type &other) |
|
template<size_t i> |
CUDA constexpr type_of< i > & | project () |
|
template<size_t i> |
CUDA constexpr const type_of< i > & | project () const |
|
CUDA constexpr value_type | value () const |
|
CUDA constexpr local::BInc | is_top () const |
|
CUDA constexpr local::BDec | is_bot () const |
|
CUDA constexpr this_type & | tell_top () |
|
template<class M , class... Bs> |
CUDA constexpr this_type & | tell (const CartesianProduct< Bs... > &other, BInc< M > &has_changed) |
|
template<size_t i, class Ai , class M > |
CUDA constexpr this_type & | tell (const Ai &a, BInc< M > &has_changed) |
|
template<class... Bs> |
CUDA constexpr this_type & | tell (const CartesianProduct< Bs... > &other) |
|
template<size_t i, class Ai > |
CUDA constexpr this_type & | tell (const Ai &a) |
|
CUDA constexpr this_type & | dtell_bot () |
|
template<class M , class... Bs> |
CUDA constexpr this_type & | dtell (const CartesianProduct< Bs... > &other, BInc< M > &has_changed) |
|
template<size_t i, class Ai , class M > |
CUDA constexpr this_type & | dtell (const Ai &a, BInc< M > &has_changed) |
|
template<class... Bs> |
CUDA constexpr this_type & | dtell (const CartesianProduct< Bs... > &other) |
|
template<size_t i, class Ai > |
CUDA constexpr this_type & | dtell (const Ai &a) |
|
template<class... Bs> |
CUDA constexpr bool | extract (CartesianProduct< Bs... > &ua) const |
|
template<class Env > |
CUDA TFormula< typename Env::allocator_type > | deinterpret (AVar x, const Env &env) const |
|
CUDA void | print () const |
|
|
static CUDA constexpr local_type | bot () |
|
static CUDA constexpr local_type | top () |
|
template<size_t i, bool diagnose = false, class F , class Env , class... Bs> |
static CUDA bool | interpret_one_tell (const F &f, const Env &env, CartesianProduct< Bs... > &k, IDiagnostics &diagnostics) |
|
template<size_t i, bool diagnose = false, class F , class Env , class... Bs> |
static CUDA bool | interpret_one_ask (const F &f, const Env &env, CartesianProduct< Bs... > &k, IDiagnostics &diagnostics) |
|
template<IKind kind, bool diagnose = false, class F , class Env , class... Bs> |
CUDA static NI bool | interpret (const F &f, const Env &env, CartesianProduct< Bs... > &k, IDiagnostics &diagnostics) |
|
template<bool diagnose, class F , class Env , class... Bs> |
static CUDA bool | interpret_tell (const F &f, const Env &env, CartesianProduct< Bs... > &k, IDiagnostics &diagnostics) |
|
template<bool diagnose, class F , class Env , class... Bs> |
static CUDA bool | interpret_ask (const F &f, const Env &env, CartesianProduct< Bs... > &k, IDiagnostics &diagnostics) |
|
static CUDA constexpr bool | is_supported_fun (Sig sig) |
|
template<Sig sig, class... Bs> |
static CUDA constexpr auto | fun (const CartesianProduct< Bs... > &a) |
|
template<Sig sig, class... As2, class... Bs> |
static CUDA constexpr auto | fun (const CartesianProduct< As2... > &a, const CartesianProduct< Bs... > &b) |
|
template<Sig sig, class... As2, class B > |
static CUDA constexpr auto | fun (const CartesianProduct< As2... > &a, const B &b) |
|
template<Sig sig, class A , class... Bs> |
static CUDA constexpr auto | fun (const A &a, const CartesianProduct< Bs... > &b) |
|
template<class... As>
class lala::CartesianProduct< As >
The Cartesian product abstract domain is a domain transformer combining several abstract domains. Concretization function: \( \gamma((a_1, \ldots, a_n)) = \bigcap_{i \leq n} \gamma_i(a_i) \).
template<class... As>
template<
Sig sig, class... As2, class... Bs>
Given two product \( (x_1, \ldots, x_n) \) and \( (y_1, \ldots, y_n) \), returns \( (f(x_1, y_1), \ldots, f(x_n, y_n)) \). If either the left or right operand is not a product, returns \( (f(x_1, c), \ldots, f(x_n, c)) \) or \( (f(c, y_1), \ldots, f(c, y_n)) \).