3#ifndef LALA_CORE_PRE_BINC_HPP
4#define LALA_CORE_PRE_BINC_HPP
32 constexpr static const char*
name =
"BInc";
39 template<
bool diagnose,
class F>
51 template<
bool diagnose,
class F>
53 return interpret_tell<diagnose>(f, ask, diagnostics);
59 template<
bool diagnose,
class F>
62 const auto& cty = battery::get<1>(f.exists());
68 const auto& vname = battery::get<0>(f.exists());
78 return F::make_bool(v);
135 static_assert(sig ==
NOT,
"Unsupported unary function.");
138 default: assert(0);
return x;
145 "Unsupported binary function.");
147 case AND:
return x && y;
148 case OR:
return x || y;
149 case IMPLY:
return !x || y;
151 case EQ:
return x == y;
153 case NEQ:
return x != y;
154 default: assert(0);
return x;
Definition diagnostics.hpp:19
#define RETURN_INTERPRETATION_ERROR(MSG)
Definition diagnostics.hpp:155
Definition abstract_deps.hpp:14
@ XOR
Logical connector.
Definition ast.hpp:114
@ NEQ
Equality relations.
Definition ast.hpp:112
@ LEQ
Unary arithmetic function symbols.
Definition ast.hpp:113
@ NOT
Unary arithmetic function symbols.
Definition ast.hpp:114
@ IMPLY
Unary arithmetic function symbols.
Definition ast.hpp:114
@ OR
Unary arithmetic function symbols.
Definition ast.hpp:114
@ EQ
Unary arithmetic function symbols.
Definition ast.hpp:112
@ LT
Unary arithmetic function symbols.
Definition ast.hpp:113
@ AND
Unary arithmetic function symbols.
Definition ast.hpp:114
@ EQUIV
Unary arithmetic function symbols.
Definition ast.hpp:114
Definition pre_bdec.hpp:16
Definition pre_binc.hpp:17
CUDA static NI constexpr bool is_supported_fun(Sig sig)
Definition pre_binc.hpp:117
static constexpr const bool preserve_top
Definition pre_binc.hpp:25
static constexpr const bool is_arithmetic
Definition pre_binc.hpp:33
static constexpr const bool increasing
Definition pre_binc.hpp:31
CUDA static NI constexpr value_type fun(value_type x, value_type y)
Definition pre_binc.hpp:143
static CUDA constexpr value_type prev(value_type x)
Definition pre_binc.hpp:115
static CUDA bool interpret_tell(const F &f, value_type &tell, IDiagnostics &diagnostics)
Definition pre_binc.hpp:40
static CUDA constexpr value_type fun(value_type x)
Definition pre_binc.hpp:134
static constexpr const bool injective_concretization
Definition pre_binc.hpp:28
CUDA static NI bool interpret_type(const F &f, value_type &k, IDiagnostics &diagnostics)
Definition pre_binc.hpp:60
CUDA static constexpr value_type zero()
Definition pre_binc.hpp:34
static CUDA constexpr bool strict_order(value_type x, value_type y)
Definition pre_binc.hpp:105
CUDA static constexpr value_type one()
Definition pre_binc.hpp:35
static CUDA constexpr value_type bot()
Definition pre_binc.hpp:88
static constexpr const bool preserve_bot
Definition pre_binc.hpp:24
static CUDA constexpr value_type meet(value_type x, value_type y)
Definition pre_binc.hpp:97
static CUDA constexpr value_type join(value_type x, value_type y)
Definition pre_binc.hpp:94
static CUDA F deinterpret(const value_type &v)
Definition pre_binc.hpp:77
static constexpr const bool complemented
Definition pre_binc.hpp:30
static CUDA bool interpret_ask(const F &f, value_type &ask, IDiagnostics &diagnostics)
Definition pre_binc.hpp:52
static CUDA constexpr value_type top()
Definition pre_binc.hpp:91
static constexpr const bool preserve_join
Definition pre_binc.hpp:26
static constexpr const char * name
Definition pre_binc.hpp:32
static CUDA constexpr bool order(value_type x, value_type y)
Definition pre_binc.hpp:101
static constexpr const bool preserve_concrete_covers
Definition pre_binc.hpp:29
static CUDA constexpr Sig sig_order()
Definition pre_binc.hpp:84
bool value_type
Definition pre_binc.hpp:20
static CUDA constexpr Sig sig_strict_order()
Definition pre_binc.hpp:85
static constexpr const bool is_totally_ordered
Definition pre_binc.hpp:23
static CUDA constexpr value_type next(value_type x)
Definition pre_binc.hpp:110
static constexpr const bool preserve_meet
Definition pre_binc.hpp:27