PPL  1.2
termination_defs.hh
Go to the documentation of this file.
1 /* Utilities for termination analysis: declarations.
2  Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
3  Copyright (C) 2010-2016 BUGSENG srl (http://bugseng.com)
4 
5 This file is part of the Parma Polyhedra Library (PPL).
6 
7 The PPL is free software; you can redistribute it and/or modify it
8 under the terms of the GNU General Public License as published by the
9 Free Software Foundation; either version 3 of the License, or (at your
10 option) any later version.
11 
12 The PPL is distributed in the hope that it will be useful, but WITHOUT
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
20 
21 For the most up-to-date information see the Parma Polyhedra Library
22 site: http://bugseng.com/products/ppl/ . */
23 
24 #ifndef PPL_termination_defs_hh
25 #define PPL_termination_defs_hh 1
26 
27 #include "termination_types.hh"
28 
29 #include "Generator_types.hh"
30 #include "C_Polyhedron_types.hh"
31 #include "NNC_Polyhedron_types.hh"
33 
34 namespace Parma_Polyhedra_Library {
35 
37 public:
38  static void
40  const Constraint_System& cs_after,
41  NNC_Polyhedron& mu_space);
42  static bool
44  const Constraint_System& cs_after,
45  Generator& mu);
46  static bool
48  Generator& mu);
49  static void
51  NNC_Polyhedron& mu_space);
52 
53  template <typename PSET>
54  static void
55  assign_all_inequalities_approximation(const PSET& pset_before,
56  const PSET& pset_after,
57  Constraint_System& cs);
58 }; // class Termination_Helpers
59 
61 
62 
92 template <typename PSET>
93 bool
94 termination_test_MS(const PSET& pset);
95 
134 template <typename PSET>
135 bool
136 termination_test_MS_2(const PSET& pset_before, const PSET& pset_after);
137 
176 template <typename PSET>
177 bool
178 one_affine_ranking_function_MS(const PSET& pset, Generator& mu);
179 
227 template <typename PSET>
228 bool
229 one_affine_ranking_function_MS_2(const PSET& pset_before,
230  const PSET& pset_after,
231  Generator& mu);
232 
271 template <typename PSET>
272 void
273 all_affine_ranking_functions_MS(const PSET& pset, C_Polyhedron& mu_space);
274 
322 template <typename PSET>
323 void
324 all_affine_ranking_functions_MS_2(const PSET& pset_before,
325  const PSET& pset_after,
326  C_Polyhedron& mu_space);
327 
374 template <typename PSET>
375 void
377  C_Polyhedron& decreasing_mu_space,
378  C_Polyhedron& bounded_mu_space);
379 
435 template <typename PSET>
436 void
437 all_affine_quasi_ranking_functions_MS_2(const PSET& pset_before,
438  const PSET& pset_after,
439  C_Polyhedron& decreasing_mu_space,
440  C_Polyhedron& bounded_mu_space);
441 
446 template <typename PSET>
447 bool
448 termination_test_PR(const PSET& pset);
449 
454 template <typename PSET>
455 bool
456 termination_test_PR_2(const PSET& pset_before, const PSET& pset_after);
457 
462 template <typename PSET>
463 bool
464 one_affine_ranking_function_PR(const PSET& pset, Generator& mu);
465 
471 template <typename PSET>
472 bool
473 one_affine_ranking_function_PR_2(const PSET& pset_before,
474  const PSET& pset_after,
475  Generator& mu);
476 
481 template <typename PSET>
482 void
483 all_affine_ranking_functions_PR(const PSET& pset, NNC_Polyhedron& mu_space);
484 
490 template <typename PSET>
491 void
492 all_affine_ranking_functions_PR_2(const PSET& pset_before,
493  const PSET& pset_after,
494  NNC_Polyhedron& mu_space);
495 
497 
498 } // namespace Parma_Polyhedra_Library
499 
500 #include "termination_templates.hh"
501 
502 #endif // !defined(PPL_termination_defs_hh)
bool one_affine_ranking_function_PR_2(const PSET &pset_before, const PSET &pset_after, Generator &mu)
bool one_affine_ranking_function_PR(const PSET &pset, Generator &mu)
void all_affine_ranking_functions_MS(const PSET &pset, C_Polyhedron &mu_space)
bool one_affine_ranking_function_MS(const PSET &pset, Generator &mu)
A line, ray, point or closure point.
static void all_affine_ranking_functions_PR(const Constraint_System &cs_before, const Constraint_System &cs_after, NNC_Polyhedron &mu_space)
Definition: termination.cc:784
static bool one_affine_ranking_function_PR(const Constraint_System &cs_before, const Constraint_System &cs_after, Generator &mu)
Definition: termination.cc:675
static void all_affine_ranking_functions_PR_original(const Constraint_System &cs, NNC_Polyhedron &mu_space)
Definition: termination.cc:877
void all_affine_ranking_functions_PR_2(const PSET &pset_before, const PSET &pset_after, NNC_Polyhedron &mu_space)
static void assign_all_inequalities_approximation(const PSET &pset_before, const PSET &pset_after, Constraint_System &cs)
bool termination_test_MS_2(const PSET &pset_before, const PSET &pset_after)
A not necessarily closed convex polyhedron.
A closed convex polyhedron.
bool termination_test_PR(const PSET &pset)
The entire library is confined to this namespace.
Definition: version.hh:61
void all_affine_quasi_ranking_functions_MS(const PSET &pset, C_Polyhedron &decreasing_mu_space, C_Polyhedron &bounded_mu_space)
bool termination_test_PR_2(const PSET &pset_before, const PSET &pset_after)
void all_affine_quasi_ranking_functions_MS_2(const PSET &pset_before, const PSET &pset_after, C_Polyhedron &decreasing_mu_space, C_Polyhedron &bounded_mu_space)
void all_affine_ranking_functions_MS_2(const PSET &pset_before, const PSET &pset_after, C_Polyhedron &mu_space)
void all_affine_ranking_functions_PR(const PSET &pset, NNC_Polyhedron &mu_space)
bool one_affine_ranking_function_MS_2(const PSET &pset_before, const PSET &pset_after, Generator &mu)
bool termination_test_MS(const PSET &pset)
static bool one_affine_ranking_function_PR_original(const Constraint_System &cs, Generator &mu)
Definition: termination.cc:735