1 /*-----------------------------------------------------------------------------+
2 Copyright (c) 2008-2010: Joachim Faulhaber
3 +------------------------------------------------------------------------------+
4 Distributed under the Boost Software License, Version 1.0.
5 (See accompanying file LICENCE.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt)
7 +-----------------------------------------------------------------------------*/
8 #ifndef LIBS_ICL_TEST_TEST_ICL_QUANTIFIER_SHARED_HPP_JOFA_100819
9 #define LIBS_ICL_TEST_TEST_ICL_QUANTIFIER_SHARED_HPP_JOFA_100819
11 #include "portability.hpp"
15 class T, class U, class Trt,
16 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
17 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
19 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
22 void make_3_icl_maps_and_derivatives_1
23 (icl::map<T,U,Trt>& map_a,
24 icl::map<T,U,Trt>& map_b,
25 icl::map<T,U,Trt>& map_c,
26 std::pair<T,U>& map_pair_a,
27 std::pair<T,U>& map_pair_b,
28 ICL_PORT_msvc_7_1_IntervalMap(T,U,Trt)*)
30 typedef IntervalMap<T,U,Trt> IntervalMapT;
31 typedef icl::map<T,U,Trt> MapT;
33 map_pair_a = sK_v(5,1);
34 map_pair_b = sK_v(9,1);
36 add(map_a, sK_v(3,1));
37 add(map_a, sK_v(4,1));
38 add(map_a, sK_v(5,1));
39 add(map_a, sK_v(5,1));
40 add(map_a, sK_v(6,1));
41 add(map_a, sK_v(7,1));
43 add(map_b, sK_v(2,1));
44 add(map_b, sK_v(8,1));
46 add(map_c, sK_v(0,2));
47 add(map_c, sK_v(1,2));
48 add(map_c, sK_v(2,2));
49 add(map_c, sK_v(3,2));
50 add(map_c, sK_v(4,2));
51 add(map_c, sK_v(5,2));
52 add(map_c, sK_v(6,2));
53 add(map_c, sK_v(7,2));
54 add(map_c, sK_v(8,2));
56 add(map_c, sK_v(3,1));
57 add(map_c, sK_v(4,1));
58 add(map_c, sK_v(5,1));
59 add(map_c, sK_v(6,1));
61 add(map_c, sK_v(5,1));
62 add(map_c, sK_v(6,1));
66 //------------------------------------------------------------------------------
68 //------------------------------------------------------------------------------
71 class T, class U, class Trt,
72 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
73 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
75 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
78 void icl_quantifier_check_monoid_plus_4_bicremental_types()
80 typedef IntervalMap<T,U,Trt> IntervalMapT;
81 typedef icl::map<T,U,Trt> MapT;
83 MapT map_a, map_b, map_c;
84 std::pair<T,U> map_pair_a, map_pair_b;
85 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
87 CHECK_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair_a, map_pair_b);
88 CHECK_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair_a, map_pair_b);
94 class T, class U, class Trt,
95 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
96 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
98 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
101 void icl_quantifier_check_monoid_et_4_bicremental_types()
103 typedef IntervalMap<T,U,Trt> IntervalMapT;
104 typedef icl::map<T,U,Trt> MapT;
106 MapT map_a, map_b, map_c;
107 std::pair<T,U> map_pair_a, map_pair_b;
108 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
110 CHECK_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, map_pair_a, map_pair_b);
111 CHECK_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair_a, map_pair_b);
114 //------------------------------------------------------------------------------
115 // Abelian monoid EANC
116 //------------------------------------------------------------------------------
120 class T, class U, class Trt,
121 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
122 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
124 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
127 void icl_quantifier_check_abelian_monoid_plus_4_bicremental_types()
129 typedef IntervalMap<T,U,Trt> IntervalMapT;
130 typedef icl::map<T,U,Trt> MapT;
132 MapT map_a, map_b, map_c;
133 std::pair<T,U> map_pair_a, map_pair_b;
134 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
136 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair_a, map_pair_b);
137 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair_a, map_pair_b);
143 class T, class U, class Trt,
144 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
145 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
147 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
150 void icl_quantifier_check_abelian_monoid_et_4_bicremental_types()
152 typedef IntervalMap<T,U,Trt> IntervalMapT;
153 typedef icl::map<T,U,Trt> MapT;
155 MapT map_a, map_b, map_c;
156 std::pair<T,U> map_pair_a, map_pair_b;
157 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
159 CHECK_ABELIAN_MONOID_INSTANCE_WRT(et) (map_a, map_b, map_c, map_pair_a, map_pair_b);
160 CHECK_ABELIAN_MONOID_INSTANCE_WRT(caret)(map_a, map_b, map_c, map_pair_a, map_pair_b);
164 //------------------------------------------------------------------------------
165 // Abelian partial invertive monoid
166 //------------------------------------------------------------------------------
169 class T, class U, class Trt,
170 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
171 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
173 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
176 void icl_quantifier_check_partial_invertive_monoid_plus_4_bicremental_types()
178 typedef IntervalMap<T,U,Trt> IntervalMapT;
179 typedef icl::map<T,U,Trt> MapT;
181 MapT map_a, map_b, map_c;
182 std::pair<T,U> map_pair_a, map_pair_b;
183 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
185 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair_a, map_pair_b);
186 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair_a, map_pair_b);
189 //------------------------------------------------------------------------------
190 // Abelian partial invertive monoid with distinct equality for inversion
191 //------------------------------------------------------------------------------
194 class T, class U, class Trt,
195 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
196 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
198 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
201 void icl_quantifier_check_partial_invertive_monoid_plus_prot_inv_4_bicremental_types()
203 typedef IntervalMap<T,U,Trt> IntervalMapT;
204 typedef icl::map<T,U,Trt> MapT;
206 MapT map_a, map_b, map_c;
207 std::pair<T,U> map_pair_a, map_pair_b;
208 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
210 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus)(map_a, map_b, map_c, map_pair_a, map_pair_b);
211 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe)(map_a, map_b, map_c, map_pair_a, map_pair_b);
213 #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
214 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(plus)(is_distinct_equal, map_a, map_b, map_c, map_pair_a, map_pair_b);
215 CHECK_PARTIAL_INVERTIVE_MONOID_INSTANCE_WRT_EQUAL(pipe)(is_distinct_equal, map_a, map_b, map_c, map_pair_a, map_pair_b);
220 //------------------------------------------------------------------------------
221 // Abelian group EANIC
222 //------------------------------------------------------------------------------
225 class T, class U, class Trt,
226 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
227 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
229 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
232 void icl_quantifier_check_abelian_group_plus_4_bicremental_types()
234 typedef IntervalMap<T,U,Trt> IntervalMapT;
235 typedef icl::map<T,U,Trt> MapT;
237 MapT map_a, map_b, map_c;
238 std::pair<T,U> map_pair_a, map_pair_b;
239 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
241 CHECK_ABELIAN_GROUP_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair_a, map_pair_b);
242 CHECK_ABELIAN_GROUP_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair_a, map_pair_b);
245 //------------------------------------------------------------------------------
247 //------------------------------------------------------------------------------
250 class T, class U, class Trt,
251 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
252 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
254 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
257 void icl_quantifier_check_abelian_group_plus_prot_inv_4_bicremental_types()
259 // check abelian group wrt. + and inverability wrt. distinct equality =d= :
260 // (1) (IntervalMapT, +) is an abelian group and
261 // (2) The inverability law: (0 - x) + x =d= 0 holds.
262 typedef IntervalMap<T,U,Trt> IntervalMapT;
263 typedef icl::map<T,U,Trt> MapT;
265 MapT map_a, map_b, map_c;
266 std::pair<T,U> map_pair_a, map_pair_b;
267 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
269 CHECK_ABELIAN_MONOID_INSTANCE_WRT(plus) (map_a, map_b, map_c, map_pair_a, map_pair_b);
270 CHECK_ABELIAN_MONOID_INSTANCE_WRT(pipe) (map_a, map_b, map_c, map_pair_a, map_pair_b);
272 #if !defined(_MSC_VER) || (_MSC_VER >= 1400) // 1310==MSVC-7.1 1400 ==MSVC-8.0
273 CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(plus) (is_distinct_equal, map_a, map_b, map_c, map_pair_a, map_pair_b);
274 CHECK_ABELIAN_GROUP_INSTANCE_WRT_EQUAL(pipe) (is_distinct_equal, map_a, map_b, map_c, map_pair_a, map_pair_b);
278 //------------------------------------------------------------------------------
280 //------------------------------------------------------------------------------
283 class T, class U, class Trt,
284 #if (defined(__GNUC__) && (__GNUC__ < 4)) //MEMO Can be simplified, if gcc-3.4 is obsolete
285 ICL_IntervalMap_TEMPLATE(T,U,Traits,Trt) IntervalMap
287 ICL_IntervalMap_TEMPLATE(_T,_U,Traits,Trt) IntervalMap
290 void icl_quantifier_check_containedness_4_bicremental_types()
292 typedef IntervalMap<T,U,Trt> IntervalMapT;
293 typedef icl::map<T,U,Trt> MapT;
295 MapT map_a, map_b, map_c;
296 std::pair<T,U> map_pair_a, map_pair_b;
297 make_3_icl_maps_and_derivatives_1(map_a, map_b, map_c, map_pair_a, map_pair_b, &aux);
299 check_intersection_containedness(map_a, map_c);
300 check_intersection_containedness(map_c, map_pair_a);
302 check_union_containedness(map_a, map_c);
303 check_union_containedness(map_c, map_pair_a);
305 check_domain_containedness(map_a);
309 #endif // LIBS_ICL_TEST_TEST_ICL_QUANTIFIER_SHARED_HPP_JOFA_100819