Mescal
Loading...
Searching...
No Matches
nfa_props.h
1
6
7#ifndef NFA_PROPS_H
8#define NFA_PROPS_H
9
10#include "monoid_props.h"
11#include "nfa_props.h"
12#include "nfa.h"
13#include "nfa_determi.h"
14#include "nfa_intersec.h"
15
16 /* _ _ _____ _ ____ _ _ */
17 /* | \ | | ___/ \ _ | _ \ _ __ ___ _ __ ___ _ __| |_(_) ___ ___ */
18 /* | \| | |_ / _ \ (_) | |_) | '__/ _ \| '_ \ / _ \ '__| __| |/ _ \/ __| */
19 /* | |\ | _/ ___ \ _ | __/| | | (_) | |_) | __/ | | |_| | __/\__ \ */
20 /* |_| \_|_|/_/ \_(_) |_| |_| \___/| .__/ \___|_| \__|_|\___||___/ */
21 /* |_| */
22
23
24/***********************/
25/* Auxiliary functions */
26/***********************/
27
40uint* dfacexa_get_alphaloop(dgraph* g,
41 parti* sccs, //<! The partition of the dgraph into strongly connected components (in order to stay within the SCC of the state).
42 bool* alph,
43 uint s
44);
45
46
47
48
49
50
51
52
53
54
55
56/***********/
57/* Trivial */
58/***********/
59
71bool is_trivial_dfa(dfa*,
72 FILE*
73);
74
86bool is_ddtrivial_dfa(dfa*,
87 FILE*
88);
89
90
91
92
104bool is_letterind_dfa(dfa*,
105 int* error,
106 FILE*
107);
108
109/*********/
110/* Group */
111/*********/
112
128bool is_permutation_dfa(dfa* A,
129 int* error,
130 FILE* out
131);
132
148bool is_permutationplus_dfa(dfa* A,
149 int* error,
150 FILE* out
151);
152
153/*********/
154/* Local */
155/*********/
156
168bool is_comm_dfa(dfa*,
169 int* error,
170 FILE*
171);
172
187bool is_alphaidem_dfa(dfa*,
188 int* error,
189 FILE*
190);
191
192
204bool is_ddidem_dfa(dfa*,
205 int* error,
206 FILE*
207);
208
223bool is_ddcomm_dfa(dfa*,
224 int* error,
225 FILE*
226);
227
228
243bool is_lttcomm_dfa(dfa*,
244 int* error,
245 FILE*
246);
247
248
249/*************************/
250/* Counter-free variants */
251/*************************/
252
268bool is_counterfreegp_dfa(dfa*,
269 basis mode,
270 int* error, // !< The error code.
271 FILE*
272);
273
278bool is_nosmallcountertwo_dfa(dfa* A);
279
280bool is_nosimple_counter_dfa(dfa* A,
281 int* error
282);
283
284/*******/
285/* Pol */
286/*******/
287
301bool is_polgp_dfa(dfa* A,
302 basis mode,
303 int* error,
304 FILE* out
305);
306
307
318bool is_polgpplus_dfa(dfa* A,
319 basis mode,
320 int* error,
321 FILE* out
322);
323
324
325
333bool is_pol2gp_dfa(dfa* A,
334 basis mode,
335 int* error,
336 FILE* out
337);
338
349bool is_pol2gpplus_dfa(dfa* A,
350 basis mode,
351 int* error,
352 FILE* out
353);
354
355/****************/
356/*+ R-trivial. +*/
357/****************/
358
359
360
368bool is_rtrivialgp_dfa(dfa* A,
369 basis mode,
370 int* error,
371 FILE* out
372);
373
381bool is_rtrivialgpplus_dfa(dfa* A,
382 basis mode,
383 int* error,
384 FILE* out
385);
386
394bool is_rtrivialbpgp_dfa(dfa* A,
395 basis mode,
396 int* error,
397 FILE* out
398);
399
410bool is_rtrivialbpgpplus_dfa(dfa* A,
411 basis mode,
412 int* error,
413 FILE* out
414);
415
416/****************/
417/*+ L-trivial. +*/
418/****************/
419
427bool is_ltrivialgp_dfa(dfa* A,
428 basis mode,
429 int* error,
430 FILE* out
431);
432
440bool is_ltrivialgpplus_dfa(dfa* A,
441 basis mode,
442 int* error,
443 FILE* out
444);
445
453bool is_ltrivialbpgp_dfa(dfa* A,
454 basis mode,
455 int* error,
456 FILE* out
457);
458
459
467bool is_ltrivialbpgpplus_dfa(dfa* A,
468 basis mode,
469 int* error,
470 FILE* out
471);
472
473/********/
474/*+ DA +*/
475/********/
476
490bool is_dagp_dfa(dfa* A,
491 basis mode,
492 int* error,
493 FILE* out
494);
495
509bool is_dagpplus_dfa(dfa* A,
510 basis mode,
511 int* error,
512 FILE* out
513);
514
528bool is_dabpgp_dfa(dfa* A,
529 basis mode,
530 int* error,
531 FILE* out
532);
533
547bool is_dabpgpplus_dfa(dfa* A,
548 basis mode,
549 int* error,
550 FILE* out
551);
552
553/**********/
554/*+ BPol +*/
555/**********/
556
567bool is_piecewise_dfa(dfa* A,
568 int* error
569);
570
578bool is_bpolmod_dfa(dfa* A,
579 int* error,
580 FILE* out
581);
582
583
591bool is_bpolamt_dfa(dfa* A,
592 int* error,
593 FILE* out
594);
595
603bool is_bpoldd_dfa(dfa* A,
604 int* error,
605 FILE* out
606);
607
615bool is_bpolmodplus_dfa(dfa* A,
616 int* error,
617 FILE* out
618);
619
620
628bool is_bpolamtplus_dfa(dfa* A,
629 int* error,
630 FILE* out
631);
632
633
641bool is_bpolgrplus_dfa(dfa* A,
642 int* error,
643 FILE* out
644);
645
646
660bool is_knastgpplus_dfa(dfa* A,
661 basis mode,
662 int* error,
663 FILE* out
664);
665
666
679bool is_knastat_dfa(dfa* A,
680 int* error,
681 FILE* out
682);
683
684/**********/
685/*+ UPol +*/
686/**********/
687
688
702bool is_upolgpplus_dfa(dfa* A,
703 basis mode,
704 int* error,
705 FILE* out
706);
707
708bool is_upolbp2gp_dfa(dfa* A, basis mode, int* error, FILE* out);
709
710bool is_upolbp2gpplus_dfa(dfa* A, basis mode, int* error, FILE* out);
711
712#endif
Tests of properties on morphisms.
Implementation of NFAs.
Determinization and complementation of NFAs.
Intersection of NFAs.
Type used to represent a complete DFA.
Definition nfa.h:61
Type used to represent a complete deterministic directed labeled graph.
Definition graphs.h:73
First type used to represent a partition. This is not the one used by Union-Find.
Definition type_partitions.h:36