cfl_bisimulation.h
Go to the documentation of this file.
1 /** @file cfl_bisimulation.h Bisimulation relations
2 
3  Functions to compute bisimulation relations on dynamic systems (represented
4  by non-deterministic finite automata).
5 
6  The relevant algorithms are described in J.-C. Fernandez, "An implementation
7  of an efficient algorithm for bisimulation equivalence", Science of Computer
8  Programming, vol. 13, pp. 219-236, 1990.
9 
10  This code was originally part of the observer-plugin and moved in revised
11  form to corefaudes by Version 2.26
12 
13 **/
14 
15 /* FAU Discrete Event Systems Library (libfaudes)
16 
17  Copyright (C) 2009, Christian Breindl
18  Copyright (C) 2015, Thomas Moor
19  Exclusive copyright is granted to Klaus Schmidt
20 
21  This library is free software; you can redistribute it and/or
22  modify it under the terms of the GNU Lesser General Public
23  License as published by the Free Software Foundation; either
24  version 2.1 of the License, or (at your option) any later version.
25 
26  This library is distributed in the hope that it will be useful,
27  but WITHOUT ANY WARRANTY; without even the implied warranty of
28  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29  Lesser General Public License for more details.
30 
31  You should have received a copy of the GNU Lesser General Public
32  License along with this library; if not, write to the Free Software
33  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
34 
35 
36 #ifndef FAUDES_CFL_BISIMULATION_H
37 #define FAUDES_CFL_BISIMULATION_H
38 
39 #include "cfl_definitions.h"
40 #include "cfl_generator.h"
41 
42 #include <vector>
43 #include <map>
44 
45 
46 
47 namespace faudes {
48 
49 /**
50 * Computation of the coarsest bisimulation relation for a specified generator.
51 *
52 * This funtcion creates an instance of the class Bisimulation and triggers the computation
53 * of the coarsest quasi-congruence on the given generator by calling the function Bisimulation::partition.
54 * The result is returned as a map from original state idicess to partion indicees.
55 * The implementation is derived from J.-C. Fernandez, “An implementation of an efficient
56 * algorithm for bisimulation equivalence,” Science of Computer Programming, vol. 13, pp. 219-236, 1990.
57 *
58 * This interface is neither used nor tested.
59 * Use ComputeBisimulation(Generator& , std::map<Idx,Idx>& , Generator& ) instead.
60 *
61 * @param rGenOrig
62 * Original generator
63 * @param rMapStateToPartition
64 * Maps each state to its equivalence class
65 *
66 * @ingroup GeneratorFunctions
67 */
68 extern FAUDES_API void ComputeBisimulation(const Generator& rGenOrig, std::map<Idx,Idx>& rMapStateToPartition);
69 
70 
71 /**
72 * Computation of the coarsest bisimulation relation for a specified generator.
73 *
74 * This is a convenience wrapper for ComputeBisimulation(Generator&, std::map<Idx,Idx>&) to
75 * return the quitient generator to represent the result.
76 *
77 * See ComputeBisimulation(const Generator&, std::map<Idx,Idx>).
78 *
79 * @param rGenOrig
80 * Original generator
81 * @param rMapStateToPartition
82 * Maps each state to its equivalence class
83 * @param rGenPart
84 * Quotient automaton representing the result of the computation. Each state corresponds to an
85 * equivalence class
86 *
87 * @ingroup GeneratorFunctions
88 */
89 extern FAUDES_API void ComputeBisimulation(const Generator& rGenOrig, std::map<Idx,Idx>& rMapStateToPartition, Generator& rGenPart);
90 
91 
92 /**
93 * Computation of the coarsest bisimulation relation for a specified generator.
94 *
95 * This is a convenience wrapper for ComputeBisimulation(Generator&, std::map<Idx,Idx>&) to
96 * return a list of nontrivial equivalence classes (singletons are not reported)
97 *
98 * See ComputeBisimulation(const Generator&, std::map<Idx,Idx>).
99 *
100 * @param rGenOrig
101 * Original generator
102 * @param rPartitions
103 * list of equivalent states
104 *
105 * @ingroup GeneratorFunctions
106 */
107 extern FAUDES_API void ComputeBisimulation(const Generator& rGenOrig, std::list< StateSet >& rPartitions);
108 
109 
110 }
111 
112 #endif
113 
Compiletime options.
Class vGenerator.
#define FAUDES_API
Interface export/import symbols: windows.
Definition: cfl_platform.h:81
vGenerator Generator
Plain generator, api typedef for generator with no attributes.
void ComputeBisimulation(const Generator &rGenOrig, map< Idx, Idx > &rMapStateToPartition)
Computation of the coarsest bisimulation relation for a specified generator.
libFAUDES resides within the namespace faudes.

libFAUDES 2.32b --- 2024.03.01 --- c++ api documentaion by doxygen