|
libFAUDES
Sections
Index
|
cfl_omega.hGo to the documentation of this file.00001 /** @file cfl_omega.h 00002 00003 Operations on omega languages. 00004 00005 */ 00006 00007 /* FAU Discrete Event Systems Library (libfaudes) 00008 00009 Copyright (C) 2010 Thomas Moor 00010 00011 This library is free software; you can redistribute it and/or 00012 modify it under the terms of the GNU Lesser General Public 00013 License as published by the Free Software Foundation; either 00014 version 2.1 of the License, or (at your option) any later version. 00015 00016 This library is distributed in the hope that it will be useful, 00017 but WITHOUT ANY WARRANTY; without even the implied warranty of 00018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00019 Lesser General Public License for more details. 00020 00021 You should have received a copy of the GNU Lesser General Public 00022 License along with this library; if not, write to the Free Software 00023 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ 00024 00025 00026 #ifndef FAUDES_OMEGA_H 00027 #define FAUDES_OMEGA_H 00028 00029 #include "cfl_definitions.h" 00030 #include "cfl_generator.h" 00031 00032 namespace faudes { 00033 00034 00035 /** 00036 * Parallel composition with relaxed acceptance condition. 00037 * 00038 * This version of the parallel composition relaxes the synchronisation of the acceptance 00039 * condition (marking). It requires that the omega extension of the generated language 00040 * has infinitely many prefixes that comply to the marked languages of G1 and G2, each. 00041 * It does however not require the synchronous acceptance. 00042 * 00043 * @param rGen1 00044 * First generator 00045 * @param rGen2 00046 * Second generator 00047 * @param rResGen 00048 * Reference to resulting parallel composition generator 00049 * 00050 * 00051 * @ingroup GeneratorFunctions 00052 * 00053 */ 00054 void OmegaParallel(const vGenerator& rGen1, const vGenerator& rGen2, vGenerator& rResGen); 00055 00056 00057 /** 00058 * Parallel composition with relaxed acceptance condition. 00059 * 00060 * See also OmegaParallel(const vGenerator&, const vGenerator&, vGenerator&). 00061 * This version tries to be transparent on event attributes: if 00062 * argument attributes match and if the result can take the respective 00063 * attributes, then they are copied; it is considered an error if 00064 * argument attributes do not match. 00065 * 00066 * @param rGen1 00067 * First generator 00068 * @param rGen2 00069 * Second generator 00070 * @param rResGen 00071 * Reference to resulting composition generator 00072 * 00073 * @ingroup GeneratorFunctions 00074 */ 00075 void aOmegaParallel(const vGenerator& rGen1, const vGenerator& rGen2, vGenerator& rResGen); 00076 00077 /** 00078 * Topological closure. 00079 * 00080 * This function computes the topological closure the omega language 00081 * Bm realized by rGen. 00082 * 00083 * Method: 00084 * First, OmegaTrim is called to erase all states of rGen that do not 00085 * contribute to Bm. Then, all remaining states are marked. 00086 * 00087 * No restrictions on parameter. 00088 * 00089 * 00090 * @param rGen 00091 * Generator that realizes Bm to which omega closure is applied 00092 * 00093 * <h4>Example:</h4> 00094 * <table> 00095 * <tr> <td> Generator G </td> <td> PrefixClosure(G) </td> </tr> 00096 * <tr> 00097 * <td> @image html tmp_omegaclosure_g.png </td> 00098 * <td> @image html tmp_omegaclosure_gRes.png </td> 00099 * </tr> 00100 * </table> 00101 * 00102 * @ingroup GeneratorFunctions 00103 */ 00104 void OmegaClosure(vGenerator& rGen); 00105 00106 00107 /** 00108 * Test for topologically closed omega language. 00109 * 00110 * This function tests whether the omega language Bm(G) realized by the specified generator G 00111 * is topologically closed. 00112 * 00113 * Method: 00114 * First, compute the omega-trim state set and restrict the discussion to that set. 00115 * Then, omega-closedness is equivalent to the non-existence on a non-trivial SCC 00116 * with no marked states. 00117 * 00118 * @param rGen 00119 * Generator that realizes Bm to which omega closure is applied 00120 * @return 00121 * True <> Bm(G) is omega closed 00122 * 00123 * @ingroup GeneratorFunctions 00124 */ 00125 bool IsOmegaClosed(const vGenerator& rGen); 00126 00127 00128 00129 00130 } // namespace faudes 00131 00132 #endif 00133 |
libFAUDES 2.16b --- 2010-9-8 --- c++ source docu by doxygen 1.6.3