Awali
Another Weighted Automata library
dyn.hh
Go to the documentation of this file.
1 // This file is part of Awali.
2 // Copyright 2016-2022 Sylvain Lombardy, Victor Marsault, Jacques Sakarovitch
3 //
4 // Awali is a free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
16 
17 #ifndef DYN_ALL_HH
18 #define DYN_ALL_HH
19 
20 #include<memory>
21 #include<set>
22 #include<string>
23 #include<iostream>
24 #include<map>
25 #include<vector>
26 #include<unordered_map>
27 
29 
30 /* ************************************************************************** */
31 /* TYPES */
32 /* ************************************************************************** */
33 
34 /* Contains type `ratexp_t` and associated method */
36 
37 
38 /* Contains type `automaton_t` and associated method */
40 
41 /* Contains type `automaton_t` and associated method */
43 
44 /* Contains functions to build sttc contexts from strings (expert) */
46 
48 
49 /* Contains type `context_t`, that is a pair (labelset,weightset) */
51 
52 /* Contains the type `qfraction_t` used for manipulated automata weighted over
53  * rational numbers.
54  */
56 
57 /* Contains enums of the different methods available for some algorithms
58  * (typically minimization, proper and quotient, etc.).
59  */
60 #include<awali/common/enums.hh>
61 
62 /* Contains the type json_ast_t that represent an abstract json tree.
63  */
65 
67 
69 
71 
73 
74 /* Contains enums of the different methods available for some algorithms
75  * (typically minimization, proper and quotient, etc.).
76  */
78 
79 /* ************************************************************************** */
80 /* MODULES */
81 /* ************************************************************************** */
82 
83 /* Module containing functions about traversing automata (accessible, trim,
84  * coaccessible, etc.)
85  */
87 
88 
89 /* Contains function to test whether two automata are equivalent, that is,
90  * associate each word with the same weight.
91  */
93 
94 
95 /* Module containing misc automaton functions : copy, weightset modification,
96  * named state addition isomorphism, multiplication of an automaton
97  */
99 
100 
101 /* Module containing the functions to build automata and rational expressions:
102  * - build automata and rational expressions from context description (expert)
103  * - build empty automata from strings describing alphabet and weightset
104  * - build rational expressions from strings describing its value and weightset
105  */
107 
108 
109 /* Module containing algorithm related to derivation of rational expression, in
110  * particular one efficient way to compute automata from rational expressions.
111  */
113 
114 /* Module containing the derminization algorithm.
115  * Also contained related functions such as complementation or reduce
116  * (pseudo-determinization for automata weighted over Z or a field).
117  */
119 
122 
123 /* Contains evaluation of words for automata, that is computation of the weight
124  * with which a word is accepted.
125  * Also contained related functions, such that enumerating the smallest
126  * accepted word and the shortest accepted words.
127  */
129 
130 /* Contains functions computing the automaton of accepting the suffixes,
131  * prefixes, or factors of the languages accepted by a given automaton.
132  */
134 
135 /* Contains factories to build example automata from known families. */
137 
138 /* Module containing algorithm on graph (e.g., sccs) */
140 
141 /* Contains facilities to import and export automata.
142  * See also "awali/dyn/algos/sys.hh"
143  */
145 
146 /* Contains the function to build a transducer that realises the identity
147  * over the words accepted by a given automaton (other words have no image).
148  */
150 
151 /* Contains the classical "intersection" product and related algorithm
152  * (shuffle, infiltration, union)
153  */
155 
156 /* Contains the functions to test and apply promotions of weightets
157  */
159 
160 /* Contains emptyword-removal algorithms. */
162 
163 /* Contains function related to automaton quotient (sometimes called
164  * automaton morphism or bissimulation)
165  */
167 
168 /* Contains functions related to rational expressions (construction from string
169  * or from automaton, algorithms)
170  */
172 
173 /* Contains unary product */
175 
176 /* Contains functions to compute and manipulate standard automata */
178 
179 /* Contains functions specific to transducers */
181 
182 /* Module containing transpose function. */
184 
185 /* Contains word automata algorithms. */
187 
188 /* ************************************************************************** */
189 /* EXTRA FUNCTIONS WRITTEN AT DYNAMICAL LAYER */
190 /* ************************************************************************** */
191 
192 /* Contains variants of other functions, provided for easier use.
193  * For instance, provides symmetric functions through transposition.
194  */
196 
197 /* Contains the evaluation for transducers. */
199 
200 /* Contains algorithm to generate a random deterministic boolean automata of a
201  * given length
202  */
204 
205 
206 /* Contains algorithm circulation? */
208 
209 
210 
211 /* awali::dyn functions to
212  * - load automata from files (or istreams);
213  * - display an automaton using `graphviz` and `dotty`;
214  * - writing pdf image of an automaton to an ostream.
215  */
216 #include<awali/dyn/algos/sys.hh>
217 
219 
221 
223 
224 #endif