Lattice land propagators completion library
lala::pc::Binary< AD, Group, Allocator > Class Template Reference

#include <terms.hpp>

Public Types

using A = AD
 
using allocator_type = Allocator
 
using U = typename Group::U
 
using G = Group
 
using this_type = Binary< A, G, allocator_type >
 
using sub_type = Term< A, allocator_type >
 
using sub_ptr = battery::unique_ptr< sub_type, allocator_type >
 

Public Member Functions

CUDA Binary (sub_ptr &&x_term, sub_ptr &&y_term)
 
CUDA Binary (this_type &&other)
 
template<class A2 , class Group2 , class Alloc2 >
CUDA Binary (const Binary< A2, Group2, Alloc2 > &other, const allocator_type &allocator)
 
CUDA bool embed (A &a, const U &u) const
 
CUDA void project (const A &a, U &r) const
 
CUDA NI void print (const A &a) const
 
template<class Env , class Allocator2 = typename Env::allocator_type>
CUDA NI TFormula< Allocator2 > deinterpret (const A &a, const Env &env, AType apc, Allocator2 allocator=Allocator2()) const
 
CUDA size_t length () const
 

Friends

template<class A2 , class Group2 , class Alloc2 >
class Binary
 

Member Typedef Documentation

◆ A

template<class AD , class Group , class Allocator >
using lala::pc::Binary< AD, Group, Allocator >::A = AD

◆ allocator_type

template<class AD , class Group , class Allocator >
using lala::pc::Binary< AD, Group, Allocator >::allocator_type = Allocator

◆ U

template<class AD , class Group , class Allocator >
using lala::pc::Binary< AD, Group, Allocator >::U = typename Group::U

◆ G

template<class AD , class Group , class Allocator >
using lala::pc::Binary< AD, Group, Allocator >::G = Group

◆ this_type

template<class AD , class Group , class Allocator >
using lala::pc::Binary< AD, Group, Allocator >::this_type = Binary<A, G, allocator_type>

◆ sub_type

template<class AD , class Group , class Allocator >
using lala::pc::Binary< AD, Group, Allocator >::sub_type = Term<A, allocator_type>

◆ sub_ptr

template<class AD , class Group , class Allocator >
using lala::pc::Binary< AD, Group, Allocator >::sub_ptr = battery::unique_ptr<sub_type, allocator_type>

Constructor & Destructor Documentation

◆ Binary() [1/3]

template<class AD , class Group , class Allocator >
CUDA lala::pc::Binary< AD, Group, Allocator >::Binary ( sub_ptr &&  x_term,
sub_ptr &&  y_term 
)
inline

◆ Binary() [2/3]

template<class AD , class Group , class Allocator >
CUDA lala::pc::Binary< AD, Group, Allocator >::Binary ( this_type &&  other)
inline

◆ Binary() [3/3]

template<class AD , class Group , class Allocator >
template<class A2 , class Group2 , class Alloc2 >
CUDA lala::pc::Binary< AD, Group, Allocator >::Binary ( const Binary< A2, Group2, Alloc2 > &  other,
const allocator_type allocator 
)
inline

Member Function Documentation

◆ embed()

template<class AD , class Group , class Allocator >
CUDA bool lala::pc::Binary< AD, Group, Allocator >::embed ( A a,
const U u 
) const
inline

Enforce x <op> y <= u where <= is the lattice order of the underlying abstract universe. For instance, over the interval abstract universe, x + y <= [2..5] will ensure that x + y is eventually at least 2 and at most 5.

◆ project()

template<class AD , class Group , class Allocator >
CUDA void lala::pc::Binary< AD, Group, Allocator >::project ( const A a,
U r 
) const
inline

◆ print()

template<class AD , class Group , class Allocator >
CUDA NI void lala::pc::Binary< AD, Group, Allocator >::print ( const A a) const
inline

◆ deinterpret()

template<class AD , class Group , class Allocator >
template<class Env , class Allocator2 = typename Env::allocator_type>
CUDA NI TFormula<Allocator2> lala::pc::Binary< AD, Group, Allocator >::deinterpret ( const A a,
const Env &  env,
AType  apc,
Allocator2  allocator = Allocator2() 
) const
inline

◆ length()

template<class AD , class Group , class Allocator >
CUDA size_t lala::pc::Binary< AD, Group, Allocator >::length ( ) const
inline

Friends And Related Function Documentation

◆ Binary

template<class AD , class Group , class Allocator >
template<class A2 , class Group2 , class Alloc2 >
friend class Binary
friend

The documentation for this class was generated from the following file: