spot  2.11.6
isdet.hh
1 // -*- coding: utf-8 -*-
2 // Copyright (C) 2012-2018 Laboratoire de Recherche et Développement
3 // de l'Epita (LRDE).
4 //
5 // This file is part of Spot, a model checking library.
6 //
7 // Spot is free software; you can redistribute it and/or modify it
8 // under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // Spot is distributed in the hope that it will be useful, but WITHOUT
13 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 // License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
19 
20 #pragma once
21 
22 #include <spot/twaalgos/sccinfo.hh>
23 #include <spot/twa/twagraph.hh>
24 
25 namespace spot
26 {
29 
37  SPOT_API unsigned
38  count_nondet_states(const const_twa_graph_ptr& aut);
39 
49  SPOT_API bool
50  is_universal(const const_twa_graph_ptr& aut);
51 
56  SPOT_API bool
57  is_deterministic(const const_twa_graph_ptr& aut);
58 
66  SPOT_API void
67  highlight_nondet_states(twa_graph_ptr& aut, unsigned color);
68 
77  SPOT_API void
78  highlight_nondet_edges(twa_graph_ptr& aut, unsigned color);
80 
88  SPOT_API void
89  highlight_semidet_sccs(scc_info& si, unsigned color);
90 
95  SPOT_API bool
96  is_complete(const const_twa_graph_ptr& aut);
97 
102  SPOT_API bool
103  is_semi_deterministic(const const_twa_graph_ptr& aut);
104 
106  SPOT_API std::vector<bool>
108 
111  SPOT_API void check_determinism(twa_graph_ptr aut);
112 
113  // \brief Count states with some universal branching.
114  //
115  // This counts the number of states that have edges going to several
116  // destinations at once (as reported by aut->is_univ_dest(...)).
117  //
118  // Note that nondeterministic automata (which include deterministic
119  // automata) have 0 such state, but additionally they also have
120  // "singleton" initial state (which this function does not check).
121  //
122  // \see count_univbranch_edges()
123  SPOT_API unsigned
124  count_univbranch_states(const const_twa_graph_ptr& aut);
125 
126  // \brief Count edges with universal branching.
127  //
128  // This counts the number of edges going to several destination at
129  // once (as reported by aut->is_univ_dest(...)).
130  //
131  // If the automaton starts in multiple initial states at once, this
132  // is considered as a universal "initial edge", and adds one to the
133  // total count.
134  //
135  // Nondeterministic automata (which include deterministic automata)
136  // have 0 edges with universal branching.
137  //
138  // \see count_univbranch_states()
139  SPOT_API unsigned
140  count_univbranch_edges(const const_twa_graph_ptr& aut);
141 }
Compute an SCC map and gather assorted information.
Definition: sccinfo.hh:443
bool is_universal(const const_twa_graph_ptr &aut)
Return true iff aut is universal.
bool is_deterministic(const const_twa_graph_ptr &aut)
Return true iff aut is deterministic.
unsigned count_nondet_states(const const_twa_graph_ptr &aut)
Count the number of states with non-deterministic branching in aut.
void highlight_nondet_edges(twa_graph_ptr &aut, unsigned color)
Highlight nondeterministic edges.
void highlight_nondet_states(twa_graph_ptr &aut, unsigned color)
Highlight nondeterministic states.
Definition: automata.hh:27
void highlight_semidet_sccs(scc_info &si, unsigned color)
Highlight the deterministic part of the automaton.
bool is_complete(const const_twa_graph_ptr &aut)
Return true iff aut is complete.
bool is_semi_deterministic(const const_twa_graph_ptr &aut)
Return true iff aut is semi-deterministic.
void check_determinism(twa_graph_ptr aut)
Set the deterministic and semi-deterministic properties appropriately.
std::vector< bool > semidet_sccs(scc_info &si)
Whether an SCC is in the deterministic part of an automaton.

Please direct any question, comment, or bug report to the Spot mailing list at spot@lrde.epita.fr.
Generated on Fri Feb 27 2015 10:00:07 for spot by doxygen 1.9.1