diag_modulardiagnosis.h
Go to the documentation of this file.
1/** @file diag_modulardiagnosis.h
2Functions to check a system's decentralized diagnosability.
3*/
4
5#ifndef DIAG_MODULARDIAGNOSIS_H
6#define DIAG_MODULARDIAGNOSIS_H
7
8#include <vector>
9#include "corefaudes.h"
10#include "op_include.h"
11#include "diag_generator.h"
13#include "diag_attrdiagstate.h"
16#include "diag_attrlabelset.h"
17
18#include "diag_debug.h"
19
20namespace faudes {
21
22///////////////////////////////////////////////////////////////////////////////
23// Functions for decentralized diagnosability
24///////////////////////////////////////////////////////////////////////////////
25
26/** @name Functions (modular diagnosability) */
27/** @{ doxygen group */
28
29/**
30Checks modular diagnosability for a system G (which consists of the subsystems rGsubs) with respect to the specification K (consisting of local specifications rKsubs) and the local abstraction alphabets rHighAlphSubs.
31@param rGsubs
32 Local subsystem automata.
33@param rKsubs
34 Local specification automata of the subsystems.
35@param rReportString
36 User-readable information of violating condition (in case of negative test result).
37@exception Exception
38 - Number of specifications does not equal number of subsystems (id 304).
39@return
40 True if system G is modular diagnosable.
41@ingroup DiagnosisPlugIn
42*/
43extern FAUDES_API bool IsModularDiagnosable(const SystemVector& rGsubs, const GeneratorVector& rKsubs, std::string& rReportString);
44
45/** @} doxygen group */
46
47
48/**
49Checks modular diagnosability for a system G (which consists of the subsystems rGsubs) with respect to the specification K (consisting of local specifications rKsubs) and the local abstraction alphabets rHighAlphSubs.
50@param rGsubs
51 Local subsystem automata.
52@param rKsubs
53 Local specification automata of the subsystems.
54@param rReportString
55 User-readable information of violating condition (in case of negative test result).
56@exception Exception
57 - Number of specifications does not equal number of subsystems (id 304).
58@return
59 True if system G is modular diagnosable.
60@ingroup DiagnosisPlugIn
61*/
62extern FAUDES_API bool IsModularDiagnosable(const std::vector< const System* >& rGsubs, const std::vector< const Generator* >& rKsubs, std::string& rReportString);
63
64/**
65Checks modular diagnosability for a system G (which consists of the subsystems rGsubs) with respect to the specification K (consisting of local specifications rKsubs) and the local abstraction alphabets rHighAlphSubs.
66@param rGsubs
67 Local subsystem automata.
68@param rKsubs
69 Local specification automata of the subsystems.
70@param rDiagsubs
71 Modular diagnosers
72@param rReportString
73 User-readable information of violating condition (in case of negative test result).
74@exception Exception
75 - Number of specifications does not equal number of subsystems (id 304).
76@return
77 True if system G is modular diagnosable.
78 The result is allocated on the heap, ownership is with the calling function.
79@ingroup DiagnosisPlugIn
80*/
81extern FAUDES_API bool ModularDiagnoser(const std::vector< const System* >& rGsubs, const std::vector<const Generator* >& rKsubs, std::vector<Diagnoser*>& rDiagsubs, std::string& rReportString);
82
83/** @name Functions (modular diagnoser computation) */
84/** @{ doxygen group */
85
86/** Function that computes diagnosers for the respective subsystems of a composed system
87 * @param rGsubs
88 * Local subsystem automata
89@param rKsubs
90 Local specification automata of the subsystems.
91@param rDiagSubs
92 Modular diagnosers
93@param rReportString
94 User-readable information of violating condition (in case of negative test result).
95@exception Exception
96 - Number of specifications does not equal number of subsystems (id 304).
97@return
98 True if system G is modular diagnosable.
99 @ingroup DiagnosisPlugIn
100 */
101extern FAUDES_API bool ModularDiagnoser(const SystemVector& rGsubs, const GeneratorVector& rKsubs, GeneratorVector& rDiagSubs,std::string& rReportString);
102
103/** @} doxygen group */
104
105
106/**
107 * Function definition for run-time interface
108 */
109extern FAUDES_API bool IsModularDiagnosable(const SystemVector& rGsubs, const GeneratorVector& rKsubs);
110
111
112/**
113 * Function definition for run-time interface
114 */
115extern FAUDES_API bool ModularDiagnoser(const SystemVector& rGsubs, const GeneratorVector& rKsubs, GeneratorVector& rDiagsubs);
116
117///////////////////////////////////////////////////////////////////////////////
118// Further Auxiliary Functions
119///////////////////////////////////////////////////////////////////////////////
120
121/**
122Parallel composition of multiple generators.
123@param rGens
124 STL-vector of generators.
125@param rResGen
126 Output variable for the resulting product generator.
127*/
128void cParallel(const std::vector<System>& rGens, System& rResGen);
129
130
131} // namespace faudes
132
133#endif
#define FAUDES_API
bool ModularDiagnoser(const SystemVector &rGsubs, const GeneratorVector &rKsubs, GeneratorVector &rDiagSubs, string &rReportString)
void cParallel(const std::vector< const System * > &rGens, System &rResGen)
bool IsModularDiagnosable(const SystemVector &rGsubs, const GeneratorVector &rKsubs, string &rReportString)

libFAUDES 2.33k --- 2025.09.16 --- c++ api documentaion by doxygen