spot
1.1.3
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
misc
minato.hh
Go to the documentation of this file.
1
// Copyright (C) 2009 Laboratoire de Recherche et Développement
2
// de l'Epita (LRDE).
3
// Copyright (C) 2003, 2004 Laboratoire d'Informatique de Paris 6 (LIP6),
4
// département Systèmes Répartis Coopératifs (SRC), Université Pierre
5
// et Marie Curie.
6
//
7
// This file is part of Spot, a model checking library.
8
//
9
// Spot is free software; you can redistribute it and/or modify it
10
// under the terms of the GNU General Public License as published by
11
// the Free Software Foundation; either version 3 of the License, or
12
// (at your option) any later version.
13
//
14
// Spot is distributed in the hope that it will be useful, but WITHOUT
15
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17
// License for more details.
18
//
19
// You should have received a copy of the GNU General Public License
20
// along with this program. If not, see <http://www.gnu.org/licenses/>.
21
22
#ifndef SPOT_MISC_MINATO_HH
23
# define SPOT_MISC_MINATO_HH
24
25
# include <bdd.h>
26
# include <stack>
27
28
namespace
spot
29
{
36
50
class
minato_isop
51
{
52
public
:
55
minato_isop
(bdd input);
59
minato_isop
(bdd input, bdd vars);
62
bdd
next
();
63
64
private
:
66
struct
local_vars
67
{
68
// If you are following the paper, f_min and f_max correspond
69
// to the pair of BDD functions used to encode the ternary function f
70
// (see Section 3.4).
71
// Also note that f0, f0', and f0'' all share the same _max function.
72
// Likewise for f1, f1', and f1''.
73
bdd
f_min
,
f_max
;
74
// Because we need a non-recursive version of the algorithm,
75
// we had to split it in four steps (each step is separated
76
// from the other by a call to ISOP in the original algorithm).
77
enum
{
FirstStep
,
SecondStep
,
ThirdStep
,
FourthStep
}
step
;
78
// The list of variables to factorize. This is an addition to
79
// the original algorithm.
80
bdd
vars
;
81
bdd
v1
;
82
bdd
f0_min
,
f0_max
;
83
bdd
f1_min
,
f1_max
;
84
bdd
g0
,
g1
;
85
local_vars
(bdd
f_min
, bdd
f_max
, bdd vars)
86
: f_min(f_min), f_max(f_max),
step
(
FirstStep
), vars(vars) {}
87
};
88
std::stack<local_vars>
todo_
;
89
std::stack<bdd>
cube_
;
90
bdd
ret_
;
91
};
92
}
93
94
#endif // SPOT_MISC_MINATO_HH
Please direct any
question
,
comment
, or
bug report
to the Spot mailing list at
spot@lrde.epita.fr
.
Generated on Tue Jul 9 2013 14:04:33 for spot by
1.8.4