#include <flat_universe.hpp>
|
static CUDA constexpr local_type | eq_k (value_type k) |
|
static CUDA constexpr local_type | bot () |
|
static CUDA constexpr local_type | top () |
|
template<bool diagnose = false, class F , class Env , class M2 > |
CUDA static NI bool | interpret_tell (const F &f, const Env &env, this_type2< M2 > &tell, IDiagnostics &diagnostics) |
|
template<bool diagnose = false, class F , class Env , class M2 > |
CUDA static NI bool | interpret_ask (const F &f, const Env &env, this_type2< M2 > &ask, IDiagnostics &diagnostics) |
|
template<IKind kind, bool diagnose = false, class F , class Env , class M2 > |
CUDA static NI bool | interpret (const F &f, const Env &env, this_type2< M2 > &value, IDiagnostics &diagnostics) |
|
◆ pre_universe
template<class PreUniverse , class Mem >
◆ value_type
template<class PreUniverse , class Mem >
using lala::FlatUniverse< PreUniverse, Mem >::value_type = typename pre_universe::value_type |
◆ memory_type
template<class PreUniverse , class Mem >
◆ this_type
template<class PreUniverse , class Mem >
◆ this_type2
template<class PreUniverse , class Mem >
template<class M >
◆ local_type
template<class PreUniverse , class Mem >
◆ FlatUniverse() [1/7]
template<class PreUniverse , class Mem >
Initialize to the top of the flat lattice.
◆ FlatUniverse() [2/7]
template<class PreUniverse , class Mem >
Similar to \([\![x = k]\!]\) for any name x
where \( = \) is the equality.
◆ FlatUniverse() [3/7]
template<class PreUniverse , class Mem >
◆ FlatUniverse() [4/7]
template<class PreUniverse , class Mem >
◆ FlatUniverse() [5/7]
template<class PreUniverse , class Mem >
template<class M >
◆ FlatUniverse() [6/7]
template<class PreUniverse , class Mem >
template<class M >
◆ FlatUniverse() [7/7]
template<class PreUniverse , class Mem >
template<class M >
◆ eq_k()
template<class PreUniverse , class Mem >
A pre-interpreted formula x = value
ready to use. This is mainly for optimization purpose to avoid calling interpret
each time we need it.
◆ bot()
template<class PreUniverse , class Mem >
Similar to \([\![\mathit{false}]\!]\).
◆ top()
template<class PreUniverse , class Mem >
Similar to \([\![\mathit{true}]\!]\).
◆ operator=() [1/2]
template<class PreUniverse , class Mem >
template<class M >
The assignment operator can only be used in a sequential context. It is monotone but not extensive.
◆ operator=() [2/2]
template<class PreUniverse , class Mem >
◆ value()
template<class PreUniverse , class Mem >
◆ operator value_type()
template<class PreUniverse , class Mem >
◆ is_top()
template<class PreUniverse , class Mem >
- Returns
true
whenever \( a = \top \), false
otherwise. @parallel @order-preserving @increasing
◆ is_bot()
template<class PreUniverse , class Mem >
- Returns
true
whenever \( a = \bot \), false
otherwise. @parallel @order-preserving @decreasing
◆ join_top()
template<class PreUniverse , class Mem >
◆ join()
template<class PreUniverse , class Mem >
template<class M1 >
◆ meet_bot()
template<class PreUniverse , class Mem >
◆ meet()
template<class PreUniverse , class Mem >
template<class M1 >
◆ deinterpret() [1/2]
template<class PreUniverse , class Mem >
template<class Env , class Allocator = typename Env::allocator_type>
CUDA NI TFormula< Allocator > lala::FlatUniverse< PreUniverse, Mem >::deinterpret |
( |
AVar | avar, |
|
|
const Env & | env, |
|
|
const Allocator & | allocator = Allocator() ) const |
|
inline |
- Returns
- \( x = k \) where
x
is a variable's name and k
the current value. true
is returned whenever \( a = \top \), and false
is returned whenever \( a = \bot \). We always return an exact approximation, hence for any formula \( \llbracket \varphi \rrbracket = a \), we must have \( a = \llbracket \rrbracket a \llbracket \rrbracket \) where \( \rrbracket a \llbracket \) is the deinterpretation function.
◆ deinterpret() [2/2]
template<class PreUniverse , class Mem >
template<class F >
Deinterpret the current value to a logical constant.
◆ extract()
template<class PreUniverse , class Mem >
Under-approximates the current element \( a \) w.r.t. \( \rrbracket a \llbracket \) into ua
. For this abstract universe, it always returns true
since the current element \( a \) is an exact representation of \( \rrbracket a \llbracket \).
◆ print()
template<class PreUniverse , class Mem >
Print the current element.
◆ interpret_tell()
template<class PreUniverse , class Mem >
template<bool diagnose = false, class F , class Env , class M2 >
Expects a predicate of the form x = k
or k = x
, where x
is any variable's name, and k
a constant. Existential formula \( \exists{x:T} \) can also be interpreted (only to top).
◆ interpret_ask()
template<class PreUniverse , class Mem >
template<bool diagnose = false, class F , class Env , class M2 >
Same as interpret_tell
without the support for existential quantifier.
◆ interpret()
template<class PreUniverse , class Mem >
template<
IKind kind, bool diagnose = false, class F , class Env , class M2 >
◆ project() [1/2]
template<class PreUniverse , class Mem >
In-place projection of the result of the unary function fun(a)
.
◆ project() [2/2]
template<class PreUniverse , class Mem >
In-place projection of the result of the binary function fun(a, b)
.
◆ FlatUniverse
template<class PreUniverse , class Mem >
template<class Pre2 , class Mem2 >
◆ is_abstract_universe
template<class PreUniverse , class Mem >
◆ sequential
template<class PreUniverse , class Mem >
◆ is_totally_ordered
template<class PreUniverse , class Mem >
◆ preserve_bot
template<class PreUniverse , class Mem >
◆ preserve_top
template<class PreUniverse , class Mem >
◆ preserve_join
template<class PreUniverse , class Mem >
◆ preserve_meet
template<class PreUniverse , class Mem >
◆ injective_concretization
template<class PreUniverse , class Mem >
const bool lala::FlatUniverse< PreUniverse, Mem >::injective_concretization = pre_universe::injective_concretization |
|
staticconstexpr |
◆ preserve_concrete_covers
template<class PreUniverse , class Mem >
◆ name
template<class PreUniverse , class Mem >
◆ is_arithmetic
template<class PreUniverse , class Mem >
const bool lala::FlatUniverse< PreUniverse, Mem >::is_arithmetic = pre_universe::is_arithmetic |
|
staticconstexpr |
The documentation for this class was generated from the following files: