3 #ifndef LALA_CORE_PRE_FLB_HPP
4 #define LALA_CORE_PRE_FLB_HPP
6 #include "../logic/logic.hpp"
36 constexpr
static const char*
name =
"FLB";
41 template <
bool diagnose,
class F>
43 return dual_type::template interpret_ask<diagnose>(f, tell, diagnostics);
46 template <
bool diagnose,
class F>
48 return dual_type::template interpret_tell<diagnose>(f, ask, diagnostics);
51 template<
bool diagnose,
class F>
53 return dual_type::template interpret_type<diagnose, F, true>(f, k, diagnostics);
58 return dual_type::template deinterpret<F>(v);
73 if(fun ==
ABS) {
return x >= 0 ? x : 0; }
81 case ADD:
return battery::add_down(x, y);
82 case SUB:
return battery::sub_down(x, y);
83 case MUL:
return battery::mul_down(x, y);
84 case DIV:
return battery::div_down(x, y);
Definition: diagnostics.hpp:19
Definition: abstract_deps.hpp:14
Sig
Definition: ast.hpp:94
@ GEQ
Unary arithmetic function symbols.
Definition: ast.hpp:113
@ ADD
Unary arithmetic function symbols.
Definition: ast.hpp:97
@ DIV
Unary arithmetic function symbols.
Definition: ast.hpp:101
@ GT
Arithmetic comparison predicates. When applied to set, it corresponds to the lexicographic ordering o...
Definition: ast.hpp:113
@ ABS
Unary arithmetic function symbols.
Definition: ast.hpp:96
@ SUB
Unary arithmetic function symbols.
Definition: ast.hpp:97
@ MUL
Unary arithmetic function symbols.
Definition: ast.hpp:97
Definition: pre_flb.hpp:19
constexpr static CUDA value_type zero()
Definition: pre_flb.hpp:38
constexpr static CUDA value_type one()
Definition: pre_flb.hpp:39
static constexpr CUDA Sig sig_strict_order()
Definition: pre_flb.hpp:62
static constexpr CUDA value_type next(value_type x)
Definition: pre_flb.hpp:69
constexpr static const bool preserve_concrete_covers
Definition: pre_flb.hpp:33
static constexpr CUDA value_type join(value_type x, value_type y)
Definition: pre_flb.hpp:65
static constexpr CUDA value_type meet(value_type x, value_type y)
Definition: pre_flb.hpp:66
static constexpr CUDA Sig sig_order()
Definition: pre_flb.hpp:61
static constexpr CUDA value_type prev(value_type x)
Definition: pre_flb.hpp:70
constexpr static const bool preserve_join
Definition: pre_flb.hpp:29
static constexpr CUDA value_type bot()
Definition: pre_flb.hpp:63
PreFLB< VT > this_type
Definition: pre_flb.hpp:20
static constexpr CUDA bool strict_order(value_type x, value_type y)
Definition: pre_flb.hpp:68
constexpr static const bool is_upper_bound
Definition: pre_flb.hpp:35
static CUDA bool interpret_ask(const F &f, value_type &ask, IDiagnostics &diagnostics)
Definition: pre_flb.hpp:47
constexpr static const char * name
Definition: pre_flb.hpp:36
constexpr static const bool is_lower_bound
Definition: pre_flb.hpp:34
static CUDA F deinterpret(const value_type &v)
Definition: pre_flb.hpp:57
static constexpr CUDA value_type project(Sig fun, value_type x)
Definition: pre_flb.hpp:72
constexpr static const bool preserve_top
Definition: pre_flb.hpp:28
constexpr static const bool preserve_meet
Definition: pre_flb.hpp:30
constexpr static const bool preserve_bot
Definition: pre_flb.hpp:27
VT value_type
Definition: pre_flb.hpp:22
PreFUB< VT > dual_type
Definition: pre_flb.hpp:21
static constexpr CUDA value_type project(Sig fun, value_type x, value_type y)
Definition: pre_flb.hpp:79
constexpr static const bool is_totally_ordered
Definition: pre_flb.hpp:26
constexpr static const bool injective_concretization
Definition: pre_flb.hpp:32
static CUDA bool interpret_type(const F &f, value_type &k, IDiagnostics &diagnostics)
Definition: pre_flb.hpp:52
static constexpr CUDA bool order(value_type x, value_type y)
Definition: pre_flb.hpp:67
constexpr static const bool is_arithmetic
Definition: pre_flb.hpp:37
static constexpr CUDA value_type top()
Definition: pre_flb.hpp:64
static CUDA bool interpret_tell(const F &f, value_type &tell, IDiagnostics &diagnostics)
Definition: pre_flb.hpp:42
Definition: pre_fub.hpp:18
static constexpr CUDA value_type bot()
Definition: pre_fub.hpp:126
static constexpr CUDA value_type top()
Definition: pre_fub.hpp:131
static constexpr CUDA value_type meet(value_type x, value_type y)
Definition: pre_fub.hpp:139
static constexpr CUDA value_type join(value_type x, value_type y)
Definition: pre_fub.hpp:136
static constexpr CUDA bool strict_order(value_type x, value_type y)
Definition: pre_fub.hpp:145
static constexpr CUDA bool order(value_type x, value_type y)
Definition: pre_fub.hpp:142
static constexpr CUDA value_type project(Sig fun, value_type x)
Definition: pre_fub.hpp:175
static constexpr CUDA value_type prev(value_type x)
Definition: pre_fub.hpp:165
static constexpr CUDA value_type next(value_type x)
Definition: pre_fub.hpp:151