Lattice Land Core Library
|
#include <simplifier.hpp>
Classes | |
struct | light_copy_tag |
struct | tell_type |
Public Types | |
using | allocator_type = Allocator |
using | sub_type = A |
using | sub_allocator_type = typename sub_type::allocator_type |
using | universe_type = typename sub_type::universe_type |
using | memory_type = typename universe_type::memory_type |
using | this_type = Simplifier<sub_type, allocator_type> |
using | formula_sequence = battery::vector<TFormula<allocator_type>, allocator_type> |
Public Member Functions | |
CUDA | Simplifier (AType atype, abstract_ptr< sub_type > sub, const allocator_type &alloc=allocator_type()) |
CUDA | Simplifier (this_type &&other) |
template<class A2 , class Alloc2 > | |
CUDA | Simplifier (const Simplifier< A2, Alloc2 > &other, light_copy_tag tag, abstract_ptr< sub_type > sub, const allocator_type &alloc=allocator_type()) |
CUDA allocator_type | get_allocator () const |
CUDA AType | aty () const |
CUDA local::B | is_bot () const |
CUDA size_t | vars () const |
template<bool diagnose = false, class F , class Env , class Alloc2 > | |
CUDA NI bool | interpret_tell (const F &f, Env &env, tell_type< Alloc2 > &tell, IDiagnostics &diagnostics) const |
template<IKind kind, bool diagnose = false, class F , class Env , class Alloc2 > | |
CUDA bool | interpret (const F &f, Env &env, tell_type< Alloc2 > &tell, IDiagnostics &diagnostics) const |
template<class Alloc2 > | |
CUDA bool | deduce (tell_type< Alloc2 > &&t) |
template<class Alloc , class Abs , class Env > | |
CUDA void | print_variable (const LVar< Alloc > &vname, const Env &benv, const Abs &b) const |
CUDA size_t | num_deductions () const |
CUDA local::B | deduce (size_t i) |
CUDA size_t | num_eliminated_variables () const |
CUDA size_t | num_eliminated_formulas () const |
CUDA NI TFormula< allocator_type > | deinterpret () |
Static Public Attributes | |
static constexpr const bool | is_abstract_universe = false |
static constexpr const bool | sequential = universe_type::sequential |
static constexpr const bool | is_totally_ordered = false |
static constexpr const bool | preserve_bot = true |
static constexpr const bool | preserve_top = true |
static constexpr const bool | preserve_join = true |
static constexpr const bool | preserve_meet = true |
static constexpr const bool | injective_concretization = true |
static constexpr const bool | preserve_concrete_covers = true |
static constexpr const char * | name = "Simplifier" |
Friends | |
template<class A2 , class Alloc2 > | |
class | Simplifier |
This abstract domain works at the level of logical formulas. It deduces the formula by performing a number of simplifications w.r.t. an underlying abstract domain including:
The simplified formula can be obtained by calling deinterpret()
. Given a solution to the simplified formula, the extended model (with the variables deleted) can be obtained by calling representative()
to obtain the representative variable of each equivalence class.
using lala::Simplifier< A, Allocator >::allocator_type = Allocator |
using lala::Simplifier< A, Allocator >::sub_type = A |
using lala::Simplifier< A, Allocator >::sub_allocator_type = typename sub_type::allocator_type |
using lala::Simplifier< A, Allocator >::universe_type = typename sub_type::universe_type |
using lala::Simplifier< A, Allocator >::memory_type = typename universe_type::memory_type |
using lala::Simplifier< A, Allocator >::this_type = Simplifier<sub_type, allocator_type> |
using lala::Simplifier< A, Allocator >::formula_sequence = battery::vector<TFormula<allocator_type>, allocator_type> |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
@parallel @order-preserving @increasing
|
inline |
Returns the number of variables currently represented by this abstract element.
|
inline |
|
inline |
|
inline |
@sequential
|
inline |
Print the abstract universe of vname
taking into account simplifications (representative variable and constant).
|
inline |
We have one deduction operator per variable and one per constraint in the interpreted formula.
|
inline |
|
inline |
|
inline |
|
inline |
|
friend |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |