3#ifndef LALA_CORE_PRE_ZLB_HPP 
    4#define LALA_CORE_PRE_ZLB_HPP 
    6#include "../logic/logic.hpp" 
   25  static_assert(std::is_integral_v<value_type>, 
"PreZLB only works over integer types.");
 
   36  constexpr static const char *
name = 
"ZLB";
 
   41  template <
bool diagnose, 
class F>
 
   43    return dual_type::template interpret_ask<diagnose, F, true>(f, tell, diagnostics);
 
 
   46  template <
bool diagnose, 
class F>
 
   48    return dual_type::template interpret_tell<diagnose, F, true>(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);
 
 
   72    if(fun == 
ABS) { 
return x >= 0 ? x : 0; }
 
   74      return dual_type::template dproject<true>(fun, x);
 
 
   78    return dual_type::template dproject<true>(fun, x, y);
 
 
 
Definition diagnostics.hpp:19
 
Definition abstract_deps.hpp:14
 
@ GEQ
Unary arithmetic function symbols.
Definition ast.hpp:113
 
@ 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
 
Definition pre_zlb.hpp:18
 
static CUDA constexpr bool strict_order(value_type x, value_type y)
Definition pre_zlb.hpp:68
 
static CUDA bool interpret_ask(const F &f, value_type &ask, IDiagnostics &diagnostics)
Definition pre_zlb.hpp:47
 
CUDA static constexpr value_type one()
Definition pre_zlb.hpp:39
 
static CUDA constexpr value_type join(value_type x, value_type y)
Definition pre_zlb.hpp:65
 
static CUDA constexpr value_type next(value_type x)
Definition pre_zlb.hpp:69
 
static CUDA constexpr value_type top()
Definition pre_zlb.hpp:64
 
static CUDA constexpr Sig sig_order()
Definition pre_zlb.hpp:61
 
static CUDA constexpr value_type project(Sig fun, value_type x)
Definition pre_zlb.hpp:71
 
static constexpr const bool preserve_concrete_covers
Definition pre_zlb.hpp:33
 
static constexpr const bool preserve_meet
Definition pre_zlb.hpp:31
 
static CUDA constexpr Sig sig_strict_order()
Definition pre_zlb.hpp:62
 
static constexpr const bool is_totally_ordered
Definition pre_zlb.hpp:27
 
static constexpr const bool is_arithmetic
Definition pre_zlb.hpp:37
 
PreZLB< VT > this_type
Definition pre_zlb.hpp:19
 
static constexpr const bool preserve_top
Definition pre_zlb.hpp:29
 
VT value_type
Definition pre_zlb.hpp:21
 
static CUDA F deinterpret(const value_type &v)
Definition pre_zlb.hpp:57
 
CUDA static constexpr value_type zero()
Definition pre_zlb.hpp:38
 
static constexpr const bool injective_concretization
Definition pre_zlb.hpp:32
 
static CUDA constexpr bool order(value_type x, value_type y)
Definition pre_zlb.hpp:67
 
static constexpr const bool preserve_bot
Definition pre_zlb.hpp:28
 
static CUDA constexpr value_type prev(value_type x)
Definition pre_zlb.hpp:70
 
static constexpr const bool is_lower_bound
Definition pre_zlb.hpp:34
 
static CUDA bool interpret_tell(const F &f, value_type &tell, IDiagnostics &diagnostics)
Definition pre_zlb.hpp:42
 
PreZUB< VT > dual_type
Definition pre_zlb.hpp:20
 
static CUDA constexpr value_type project(Sig fun, value_type x, value_type y)
Definition pre_zlb.hpp:77
 
static constexpr const char * name
Definition pre_zlb.hpp:36
 
static CUDA bool interpret_type(const F &f, value_type &k, IDiagnostics &diagnostics)
Definition pre_zlb.hpp:52
 
static constexpr const bool preserve_join
Definition pre_zlb.hpp:30
 
static constexpr const bool is_upper_bound
Definition pre_zlb.hpp:35
 
static CUDA constexpr value_type bot()
Definition pre_zlb.hpp:63
 
static CUDA constexpr value_type meet(value_type x, value_type y)
Definition pre_zlb.hpp:66
 
Definition pre_zub.hpp:17
 
CUDA static INLINE constexpr value_type top()
Definition pre_zub.hpp:173
 
CUDA static INLINE constexpr bool order(value_type x, value_type y)
Definition pre_zub.hpp:184
 
CUDA static INLINE constexpr bool strict_order(value_type x, value_type y)
Definition pre_zub.hpp:187
 
static CUDA constexpr value_type next(value_type x)
Definition pre_zub.hpp:194
 
CUDA static INLINE constexpr value_type join(value_type x, value_type y)
Definition pre_zub.hpp:178
 
static CUDA constexpr value_type prev(value_type x)
Definition pre_zub.hpp:203
 
CUDA static INLINE constexpr value_type bot()
Definition pre_zub.hpp:168
 
CUDA static INLINE constexpr value_type meet(value_type x, value_type y)
Definition pre_zub.hpp:181