cfl_conflequiv.h
Go to the documentation of this file.
1 /** @file cfl_conflequiv.h
2 
3 Abstractions that maintaine conflict-equivalence.
4 
5 */
6 
7 /* FAU Discrete Event Systems Library (libfaudes)
8 
9  Copyright (C) 2015 Michael Meyer and Thomnas Moor.
10  Exclusive copyright is granted to Klaus Schmidt
11 
12  This library is free software; you can redistribute it and/or
13  modify it under the terms of the GNU Lesser General Public
14  License as published by the Free Software Foundation; either
15  version 2.1 of the License, or (at your option) any later version.
16 
17  This library is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20  Lesser General Public License for more details.
21 
22  You should have received a copy of the GNU Lesser General Public
23  License along with this library; if not, write to the Free Software
24  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
25 
26 
27 #ifndef FAUDES_CONFEQUIV_H
28 
29 #include "cfl_definitions.h"
30 #include "cfl_generator.h"
31 
32 
33 namespace faudes {
34 
35 /**
36  * Test for conflicts
37  *
38  * A family of generators is non-blocking, if their parallel composition
39  * is non-blocking (all accessible states are co-accessible).
40  *
41  * This implementation applies a number of conflict equivalent
42  * simplifications before finally testing for conflicts in the
43  * parallel composition; see also
44  * ConflictEquivalentAbstraction(vGenerator&, const EventSet&)
45  * This approach has been originally proposed by R. Malik and H. Flordal
46  * in "Compositional verification in supervisory
47  * control", SIAM Journal of Control and Optimization, 2009.
48  *
49  * The current implementation is experimental with code based on Michael Meyer's
50  * BSc Thesis.
51  *
52  *
53  * @param rGenVec
54  * Vector of input generators
55  * @return res
56  * true if there are no conflicts
57  *
58  * @ingroup GeneratorFunctions
59  */
60 bool IsNonblocking(const GeneratorVector& rGenVec);
61 
62 
63 /**
64  * Conflict equivalent abstraction.
65  *
66  * Two generators are conflict equivalent w.r.t. a set of silent events,
67  * if, for any test generator defined over the not-silent events, either
68  * both or non are conflicting. This functions implements a selection of
69  * conflict equivalent transformations proposed by R. Malik and H. Flordal
70  * in "Compositional verification in supervisory control", SIAM Journal of
71  * Control and Optimization, 2009.
72  *
73  * The current implementation is experimental with code based on Michael Meyer's
74  * BSc Thesis.
75  *
76  * @param rGen
77  * Input generator
78  * @param rSilentEvents
79  * Set of silent events, i.e., events not shared
80  * with any other generator to compose with.
81  *
82  * @ingroup GeneratorFunctions
83  */
84 void ConflictEquivalentAbstraction(vGenerator& rGen, const EventSet& rSilentEvents);
85 
86 
87 
88 
89 } // namespace faudes
90 
91 #define FAUDES_CONFEQUIV_H
92 #endif
93 

libFAUDES 2.26g --- 2015.08.17 --- c++ api documentaion by doxygen