3#ifndef LALA_CORE_PRE_FDEC_HPP
4#define LALA_CORE_PRE_FDEC_HPP
35 constexpr static const char*
name =
"FDec";
40 template <
bool diagnose,
class F>
42 return dual_type::template interpret_ask<diagnose>(f, tell, diagnostics);
45 template <
bool diagnose,
class F>
47 return dual_type::template interpret_tell<diagnose>(f, ask, diagnostics);
50 template<
bool diagnose,
class F>
52 bool res = dual_type::template interpret_type<diagnose>(f, k, diagnostics);
61 return dual_type::template deinterpret<F>(v);
79 return dual_type::template fun<sig>(x);
86 case ADD:
return battery::add_up(x, y);
87 case SUB:
return battery::sub_up(x, y);
88 case MUL:
return battery::mul_up(x, y);
89 case DIV:
return battery::div_up(x, y);
90 default:
return dual_type::template fun<sig>(x, y);
Definition diagnostics.hpp:19
Definition abstract_deps.hpp:14
@ 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_fdec.hpp:19
static constexpr const bool is_totally_ordered
Definition pre_fdec.hpp:25
static CUDA constexpr value_type meet(value_type x, value_type y)
Definition pre_fdec.hpp:69
static CUDA bool interpret_type(const F &f, value_type &k, IDiagnostics &diagnostics)
Definition pre_fdec.hpp:51
static CUDA constexpr Sig sig_strict_order()
Definition pre_fdec.hpp:65
static CUDA constexpr value_type top()
Definition pre_fdec.hpp:67
static constexpr const bool complemented
Definition pre_fdec.hpp:33
static constexpr const bool preserve_top
Definition pre_fdec.hpp:27
static CUDA F deinterpret(const value_type &v)
Definition pre_fdec.hpp:60
static CUDA constexpr value_type join(value_type x, value_type y)
Definition pre_fdec.hpp:68
static constexpr const bool injective_concretization
Definition pre_fdec.hpp:31
static CUDA constexpr value_type next(value_type x)
Definition pre_fdec.hpp:72
static CUDA bool interpret_ask(const F &f, value_type &ask, IDiagnostics &diagnostics)
Definition pre_fdec.hpp:46
static constexpr const bool preserve_join
Definition pre_fdec.hpp:28
static CUDA bool interpret_tell(const F &f, value_type &tell, IDiagnostics &diagnostics)
Definition pre_fdec.hpp:41
static CUDA constexpr bool order(value_type x, value_type y)
Definition pre_fdec.hpp:70
VT value_type
Definition pre_fdec.hpp:22
PreFInc< VT > dual_type
Definition pre_fdec.hpp:21
static CUDA constexpr bool is_supported_fun(Sig sig)
Definition pre_fdec.hpp:74
static CUDA constexpr value_type bot()
Definition pre_fdec.hpp:66
static CUDA constexpr bool strict_order(value_type x, value_type y)
Definition pre_fdec.hpp:71
static constexpr const char * name
Definition pre_fdec.hpp:35
static constexpr const bool increasing
Definition pre_fdec.hpp:34
static CUDA constexpr Sig sig_order()
Definition pre_fdec.hpp:64
static CUDA constexpr value_type fun(value_type x, value_type y)
Definition pre_fdec.hpp:83
CUDA static constexpr value_type one()
Definition pre_fdec.hpp:38
static CUDA constexpr value_type prev(value_type x)
Definition pre_fdec.hpp:73
static constexpr const bool preserve_bot
Definition pre_fdec.hpp:26
CUDA static constexpr value_type zero()
Definition pre_fdec.hpp:37
static constexpr const bool preserve_meet
Definition pre_fdec.hpp:29
static constexpr const bool is_arithmetic
Definition pre_fdec.hpp:36
static CUDA constexpr value_type fun(value_type x)
Definition pre_fdec.hpp:77
static constexpr const bool preserve_concrete_covers
Definition pre_fdec.hpp:32
Definition pre_finc.hpp:18
static CUDA constexpr value_type prev(value_type x)
Definition pre_finc.hpp:164
static CUDA constexpr value_type top()
Definition pre_finc.hpp:130
static CUDA constexpr bool order(value_type x, value_type y)
Definition pre_finc.hpp:141
static CUDA constexpr value_type join(value_type x, value_type y)
Definition pre_finc.hpp:135
static CUDA constexpr value_type bot()
Definition pre_finc.hpp:125
CUDA static NI constexpr bool is_supported_fun(Sig sig)
Definition pre_finc.hpp:174
static CUDA constexpr value_type next(value_type x)
Definition pre_finc.hpp:150
static CUDA constexpr value_type meet(value_type x, value_type y)
Definition pre_finc.hpp:138
static CUDA constexpr bool strict_order(value_type x, value_type y)
Definition pre_finc.hpp:144