spot  1.2.1a
scc_decompose.hh
1 // Copyright (C) 2009, 2010 Laboratoire de Recherche et Developpement
2 // de l'Epita (LRDE).
3 //
4 // This file is part of Spot, a model checking library.
5 //
6 // Spot is free software; you can redistribute it and/or modify it
7 // under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 2 of the License, or
9 // (at your option) any later version.
10 //
11 // Spot is distributed in the hope that it will be useful, but WITHOUT
12 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
14 // License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with Spot; see the file COPYING. If not, write to the Free
18 // Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 // 02111-1307, USA.
20 
21 
22 #ifndef SPOT_TGBAALGOS_SCC_DECOMPOSE_HH
23 # define SPOT_TGBAALGOS_SCC_DECOMPOSE_HH
24 
25 #include "tgba/tgba.hh"
26 #include "tgbaalgos/scc.hh"
27 #include "tgbaalgos/sccfilter.hh"
28 
29 namespace spot
30 {
33  class SPOT_API scc_decompose
34  {
35  protected:
36  bool is_strong;
37  bool is_weak;
38  bool is_terminal;
39  scc_map *sm; // The map used to decompose
40  const tgba* src_; // The orginal automaton
41  const tgba* terminal_; // The terminal extracted
42  const tgba* weak_; // The weak extracted
43  const tgba* strong_; // The strong extracted
44  bool minimize; // Should we minimize
45 
46  public :
47  scc_decompose(const tgba *a, bool minimize = true):
48  src_(a), minimize (minimize)
49  {
50  sm = new scc_map(src_);
51  sm->build_map();
52  decompose_weak();
53  decompose_terminal();
54  decompose_strong();
55  }
56 
57  virtual
58  ~scc_decompose()
59  {
60  delete sm;
61  delete weak_;
62  delete strong_;
63  delete terminal_;
64  }
65 
73  const tgba*
74  terminal_automaton ();
75 
83  const tgba*
84  weak_automaton ();
85 
93  const tgba*
94  strong_automaton ();
95 
98  void
99  decompose();
100 
101 
102  tgba*
103  recompose();
104 
105 
106  protected:
107  // Decompose into strong automaton
108  void decompose_strong();
109  // Decompose into weak automaton
110  void decompose_weak();
111  // Decompose into terminal
112  void decompose_terminal();
113  };
114 }
115 
116 #endif // SPOT_TGBAALGOS_SCC_DECOMPOSE_HH
this class acts like a wrapper to the C code of the open_set.
Definition: public.hh:32
void build_map()
Actually compute the graph of strongly connected components.
Definition: scc_decompose.hh:33
A Transition-based Generalized Büchi Automaton.
Definition: tgba.hh:67
Build a map of Strongly Connected components in in a TGBA.
Definition: scc.hh:70

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Fri Jun 5 2015 11:31:19 for spot by doxygen 1.8.9.1