#include <arith_bound.hpp>
 | 
| static CUDA constexpr this_type  | geq_k (value_type k) | 
|   | 
| static CUDA constexpr this_type  | leq_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 &, 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 &, 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) | 
|   | 
| static CUDA constexpr local_type  | next (const this_type2< Mem > &a) | 
|   | 
| static CUDA constexpr local_type  | prev (const this_type2< Mem > &a) | 
|   | 
| static CUDA constexpr bool  | is_trivial_fun (Sig fun) | 
|   | 
| static CUDA constexpr bool  | is_order_preserving_fun (Sig fun) | 
|   | 
 | 
| template<class Pre2 , class Mem2 >  | 
| class  | ArithBound | 
|   | 
◆ pre_universe
template<class PreUniverse , class Mem > 
      
 
 
◆ value_type
template<class PreUniverse , class Mem > 
      
        
          | using lala::ArithBound< PreUniverse, Mem >::value_type =  typename pre_universe::value_type | 
        
      
 
 
◆ memory_type
template<class PreUniverse , class Mem > 
      
 
 
◆ this_type
template<class PreUniverse , class Mem > 
      
 
 
◆ dual_type
template<class PreUniverse , class Mem > 
      
 
 
◆ this_type2
template<class PreUniverse , class Mem > 
template<class M > 
      
 
 
◆ local_type
template<class PreUniverse , class Mem > 
      
 
 
◆ flat_type
template<class PreUniverse , class Mem > 
template<class M > 
      
 
 
◆ local_flat_type
template<class PreUniverse , class Mem > 
      
 
 
◆ atomic_type
template<class PreUniverse , class Mem > 
      
 
 
◆ ArithBound() [1/5]
template<class PreUniverse , class Mem > 
 
Initialize an upset universe to top. 
 
 
◆ ArithBound() [2/5]
template<class PreUniverse , class Mem > 
 
Similar to \([\![x \leq_A i]\!]\) for any name x where \( \leq_A \) is the lattice order. 
 
 
◆ ArithBound() [3/5]
template<class PreUniverse , class Mem > 
 
 
◆ ArithBound() [4/5]
template<class PreUniverse , class Mem > 
 
 
◆ ArithBound() [5/5]
template<class PreUniverse , class Mem > 
template<class M > 
 
 
◆ geq_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. 
 
 
◆ leq_k()
template<class PreUniverse , class Mem > 
 
 
◆ bot()
template<class PreUniverse , class Mem > 
 
Similar to \([\![\mathit{false}]\!]\) if preserve_bot is true. 
 
 
◆ top()
template<class PreUniverse , class Mem > 
 
Similar to \([\![\mathit{true}]\!]\) if preserve_top is 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 > 
 
 
◆ atomic()
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::ArithBound< PreUniverse, Mem >::deinterpret  | 
          ( | 
          AVar  | 
          avar,  | 
         
        
           | 
           | 
          const Env &  | 
          env,  | 
         
        
           | 
           | 
          const Allocator &  | 
          allocator = Allocator()  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
inline   | 
  
 
- Returns
 - \( x <op> i \) where 
x is a variable's name, i the current value and <op> depends on the underlying universe. If U preserves top, true is returned whenever \( a = \top \), if it preserves bottom 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 <op> k where x is any variable's name, and k a constant. The symbol <op> is expected to be U::sig_order(), U::sig_strict_order(), = or in. Existential formula \( \exists{x:T} \) can also be interpreted (only to top) depending on the underlying pre-universe. 
 
 
◆ interpret_ask()
template<class PreUniverse , class Mem > 
template<bool diagnose = false, class F , class Env , class M2 > 
 
Expects a predicate of the form x <op> k where x is any variable's name, and k a constant. The symbol <op> is expected to be U::sig_order(), U::sig_strict_order() or !=. 
 
 
◆ interpret()
template<class PreUniverse , class Mem > 
template<
IKind kind, bool diagnose = false, class F , class Env , class M2 > 
 
 
 
◆ next()
template<class PreUniverse , class Mem > 
 
 
◆ prev()
template<class PreUniverse , class Mem > 
 
 
◆ project() [1/4]
template<class PreUniverse , class Mem > 
 
Unary function of type fun: FlatUniverse -> ArithBound. If a is bot, we meet with bottom in-place. Otherwise, we apply the function fun to a and meet the result. 
 
 
◆ project() [2/4]
template<class PreUniverse , class Mem > 
 
 
◆ is_trivial_fun()
template<class PreUniverse , class Mem > 
 
In this universe, the non-trivial order-preserving functions are {min, max, +}. 
 
 
◆ is_order_preserving_fun()
template<class PreUniverse , class Mem > 
  
  
      
        
          | static CUDA constexpr bool lala::ArithBound< PreUniverse, Mem >::is_order_preserving_fun  | 
          ( | 
          Sig  | 
          fun | ) | 
           | 
         
       
   | 
  
inlinestaticconstexpr   | 
  
 
The functions that are order-preserving on the natural order of the universe of discourse, and its dual. 
 
 
◆ project() [3/4]
template<class PreUniverse , class Mem > 
 
 
◆ project() [4/4]
template<class PreUniverse , class Mem > 
 
 
◆ ArithBound
template<class PreUniverse , class Mem > 
template<class Pre2 , class Mem2 > 
 
 
◆ is_abstract_universe
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::is_abstract_universe = true | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ sequential
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::sequential = Mem::sequential | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ is_totally_ordered
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::is_totally_ordered = pre_universe::is_totally_ordered | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ preserve_bot
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::preserve_bot = pre_universe::preserve_bot | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ preserve_top
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::preserve_top = pre_universe::preserve_top | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ preserve_join
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::preserve_join = pre_universe::preserve_join | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ preserve_meet
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::preserve_meet = pre_universe::preserve_meet | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ injective_concretization
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::injective_concretization = pre_universe::injective_concretization | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ preserve_concrete_covers
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::preserve_concrete_covers = pre_universe::preserve_concrete_covers | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ is_lower_bound
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::is_lower_bound = pre_universe::is_lower_bound | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ is_upper_bound
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::is_upper_bound = pre_universe::is_upper_bound | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ name
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const char* lala::ArithBound< PreUniverse, Mem >::name = pre_universe::name | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
◆ is_arithmetic
template<class PreUniverse , class Mem > 
  
  
      
        
          | constexpr const bool lala::ArithBound< PreUniverse, Mem >::is_arithmetic = pre_universe::is_arithmetic | 
         
       
   | 
  
staticconstexpr   | 
  
 
 
The documentation for this class was generated from the following file: