6d126ab236
[SVN r68096]
302 lines
12 KiB
C++
302 lines
12 KiB
C++
/*-----------------------------------------------------------------------------+
|
|
Copyright (c) 2008-2009: Joachim Faulhaber
|
|
+------------------------------------------------------------------------------+
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
(See accompanying file LICENCE.txt or copy at
|
|
http://www.boost.org/LICENSE_1_0.txt)
|
|
+-----------------------------------------------------------------------------*/
|
|
#ifndef __TEST_INTERVAL_QUANTIFIER_SHARED_H_JOFA_090119__
|
|
#define __TEST_INTERVAL_QUANTIFIER_SHARED_H_JOFA_090119__
|
|
|
|
#include "portability.hpp"
|
|
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void make_3_itv_maps_and_derivatives_1
|
|
(ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)& itv_map_a,
|
|
ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)& itv_map_b,
|
|
ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)& itv_map_c,
|
|
typename ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)::interval_mapping_type& val_pair,
|
|
mapping_pair<T,U>& map_pair)
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
|
|
itv_map_a.add(IDv(3,6,1)).add(IIv(5,7,1));
|
|
itv_map_b.add(CDv(1,3,1)).add(IDv(8,9,1));
|
|
itv_map_c.add(IDv(0,9,2)).add(IIv(3,6,1)).add(IDv(5,7,1));
|
|
|
|
val_pair = IDv(6,9,1);
|
|
map_pair = K_v(5,1);
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Monoid EAN
|
|
//------------------------------------------------------------------------------
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_monoid_plus_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
|
|
}
|
|
|
|
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_monoid_et_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Abelian monoid EANC
|
|
//------------------------------------------------------------------------------
|
|
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_abelian_monoid_plus_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
|
|
}
|
|
|
|
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_abelian_monoid_et_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, val_pair, map_pair);
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Abelian partial invertive monoid
|
|
//------------------------------------------------------------------------------
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Abelian partial invertive monoid with distinct equality for inversion
|
|
//------------------------------------------------------------------------------
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
#if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
|
|
CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
|
|
#endif
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Abelian group EANIC
|
|
//------------------------------------------------------------------------------
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_abelian_group_plus_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
// (0 - x) + x =d= 0
|
|
//------------------------------------------------------------------------------
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()
|
|
{
|
|
// check abelian group wrt. + and inverability wrt. distinct equality =d= :
|
|
// (1) (IntervalMapT, +) is an abelian group and
|
|
// (2) The inverability law: (0 - x) + x =d= 0 holds.
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
#if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
|
|
CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
|
|
CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_distinct_equal, map_a, map_b, map_c, val_pair, map_pair);
|
|
#endif
|
|
}
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Inner complement
|
|
//------------------------------------------------------------------------------
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_inner_complementarity_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
typedef typename IntervalMap<T,U,Trt>::set_type IntervalSetT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
has_inner_complementarity<IntervalMapT,IntervalSetT>(map_a);
|
|
has_inner_complementarity<IntervalMapT,IntervalSetT>(map_b);
|
|
has_inner_complementarity<IntervalMapT,IntervalSetT>(map_c);
|
|
}
|
|
|
|
template
|
|
<
|
|
class T, class U, class Trt,
|
|
#if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
|
|
ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
|
|
#else
|
|
ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
|
|
#endif
|
|
>
|
|
void itv_quantifier_check_length_complementarity_4_bicremental_types()
|
|
{
|
|
typedef IntervalMap<T,U,Trt> IntervalMapT;
|
|
typedef typename IntervalMap<T,U,Trt>::set_type IntervalSetT;
|
|
IntervalMapT map_a, map_b, map_c;
|
|
typename IntervalMapT::interval_mapping_type val_pair;
|
|
mapping_pair<T,U> map_pair;
|
|
make_3_itv_maps_and_derivatives_1(map_a, map_b, map_c, val_pair, map_pair);
|
|
|
|
has_length_complementarity(map_a);
|
|
has_length_complementarity(map_b);
|
|
has_length_complementarity(map_c);
|
|
|
|
has_length_as_distance<IntervalMapT,IntervalSetT>(map_a);
|
|
has_length_as_distance<IntervalMapT,IntervalSetT>(map_b);
|
|
has_length_as_distance<IntervalMapT,IntervalSetT>(map_c);
|
|
}
|
|
|
|
|
|
|
|
#endif // __TEST_INTERVAL_QUANTIFIER_SHARED_H_JOFA_090119__
|
|
|