Mescal
Loading...
Searching...
No Matches
shell_memb.h
1#ifndef SHELL_MEMB_H
2#define SHELL_MEMB_H
3
4#include "alloc.h"
6#include "monoid_props.h"
7#include "nfa_enum.h"
8#include "shell_commands.h"
9#include "shell_languages.h"
10#include "shell_sclass.h"
11
12#include <stdint.h>
13
18typedef enum {
19 MEMB_MINIMAL,
20 MEMB_SYNTAC,
21 MEMB_OPTIMAL,
22 MEMB_SIZE,
23}
24membership_mode;
25
30extern membership_mode memb_mode;
31
32
37extern bool (*class_membership[CL_END])(int, membership_mode, FILE*);
38
43void init_membership(void);
44
53bool shell_membership_needs_order(classes
54);
55
56/**************************************/
57/* Membership functions for languages */
58/**************************************/
59
70bool shell_membership_reg(
71 int,
72 membership_mode,
73 FILE*
74);
75
86bool shell_membership_empty(
87 int,
88 membership_mode,
89 FILE*
90);
91
92bool shell_membership_htgen(
93 int,
94 membership_mode,
95 FILE*
96);
97
98/*****************/
99/* Group classes */
100/*****************/
101
109bool shell_membership_st(
110 int,
111 membership_mode,
112 FILE*
113);
114
122bool shell_membership_dd(
123 int,
124 membership_mode,
125 FILE*
126);
127
135bool shell_membership_mod(
136 int,
137 membership_mode,
138 FILE*
139);
140
148bool shell_membership_modp(
149 int,
150 membership_mode,
151 FILE*
152);
153
161bool shell_membership_amt(
162 int,
163 membership_mode,
164 FILE*
165);
166
174bool shell_membership_amtp(
175 int,
176 membership_mode,
177 FILE*
178);
179
187bool shell_membership_gr(
188 int,
189 membership_mode,
190 FILE*
191);
192
200bool shell_membership_grp(
201 int,
202 membership_mode,
203 FILE*
204);
205
206/*****************/
207/* AT-ATT-LT-LTT */
208/*****************/
209
217bool shell_membership_at(
218 int,
219 membership_mode,
220 FILE*
221);
222
230bool shell_membership_att(
231 int,
232 membership_mode,
233 FILE*
234);
235
243bool shell_membership_lt(
244 int,
245 membership_mode,
246 FILE*
247);
248
256bool shell_membership_ltt(
257 int,
258 membership_mode,
259 FILE*
260);
261
262/*********************/
263/* Star-free closure */
264/*********************/
265
273bool shell_membership_sf(
274 int,
275 membership_mode,
276 FILE*
277);
278
286bool shell_membership_sfmod(
287 int,
288 membership_mode,
289 FILE*
290);
291
299bool shell_membership_sfamt(
300 int,
301 membership_mode,
302 FILE*
303);
304
312bool shell_membership_sfgr(
313 int,
314 membership_mode,
315 FILE*
316);
317
318/**********************/
319/* Polynomial closure */
320/**********************/
321
329bool shell_membership_ppt(
330 int,
331 membership_mode,
332 FILE*
333);
334
342bool shell_membership_polmod(
343 int,
344 membership_mode,
345 FILE*
346);
347
355bool shell_membership_polgr(
356 int,
357 membership_mode,
358 FILE*
359);
360
368bool shell_membership_poldd(
369 int,
370 membership_mode,
371 FILE*
372);
373
381bool shell_membership_polmodp(
382 int,
383 membership_mode,
384 FILE*
385);
386
394bool shell_membership_polgrp(
395 int,
396 membership_mode,
397 FILE*
398);
399
407bool shell_membership_pol2st(
408 int,
409 membership_mode,
410 FILE*
411);
412
420bool shell_membership_pol2mod(
421 int,
422 membership_mode,
423 FILE*
424);
425
433bool shell_membership_pol2amt(
434 int,
435 membership_mode,
436 FILE*
437);
438
446bool shell_membership_pol2gr(
447 int,
448 membership_mode,
449 FILE*
450);
451
459bool shell_membership_pol2dd(
460 int,
461 membership_mode,
462 FILE*
463);
464
472bool shell_membership_pol2modp(
473 int,
474 membership_mode,
475 FILE*
476);
477
485bool shell_membership_pol2amtp(
486 int,
487 membership_mode,
488 FILE*
489);
490
498bool shell_membership_pol2grp(
499 int,
500 membership_mode,
501 FILE*
502);
503
504/******************************/
505/* Boolean polynomial closure */
506/******************************/
507
515bool shell_membership_pt(
516 int,
517 membership_mode,
518 FILE*
519);
520
528bool shell_membership_bpolmod(
529 int,
530 membership_mode,
531 FILE*
532);
533
541bool shell_membership_bpolamt(
542 int,
543 membership_mode,
544 FILE*
545);
546
554bool shell_membership_bpolgr(
555 int,
556 membership_mode,
557 FILE*
558);
559
567bool shell_membership_bpolgrp(
568 int,
569 membership_mode,
570 FILE*
571);
572
580bool shell_membership_bpoldd(
581 int,
582 membership_mode,
583 FILE*
584);
585
593bool shell_membership_bpolmodp(
594 int,
595 membership_mode,
596 FILE*
597);
598
606bool shell_membership_bpolamtp(
607 int,
608 membership_mode,
609 FILE*
610);
611
619bool shell_membership_bpol2st(
620 int,
621 membership_mode,
622 FILE*
623);
624
632bool shell_membership_jorbmod(
633 int,
634 membership_mode,
635 FILE*
636);
637
645bool shell_membership_jorbamt(
646 int,
647 membership_mode,
648 FILE*
649);
650
658bool shell_membership_jorbdd(
659 int,
660 membership_mode,
661 FILE*
662);
663
671bool shell_membership_jorbmodp(
672 int,
673 membership_mode,
674 FILE*
675);
676
684bool shell_membership_jorbamtp(
685 int,
686 membership_mode,
687 FILE*
688);
689
697bool shell_membership_jorbgrp(
698 int,
699 membership_mode,
700 FILE*
701);
702
710bool shell_membership_jorbat(
711 int,
712 membership_mode,
713 FILE*
714);
715
723bool shell_membership_knastamtp(
724 int,
725 membership_mode,
726 FILE*
727);
728
736bool shell_membership_knastgrp(
737 int,
738 membership_mode,
739 FILE*
740);
741
749bool shell_membership_knastat(
750 int,
751 membership_mode,
752 FILE*
753);
754
755/**********************************/
756/* Unambiguous polynomial closure */
757/**********************************/
758
766bool shell_membership_upoldd(
767 int,
768 membership_mode,
769 FILE*
770);
771
779bool shell_membership_upolmodp(
780 int,
781 membership_mode,
782 FILE*
783);
784
792bool shell_membership_upolamtp(
793 int,
794 membership_mode,
795 FILE*
796);
797
805bool shell_membership_upolgrp(
806 int,
807 membership_mode,
808 FILE*
809);
810
818bool shell_membership_ubpol2st(
819 int,
820 membership_mode,
821 FILE*
822);
823
831bool shell_membership_ubpol2mod(
832 int,
833 membership_mode,
834 FILE*
835);
836
844bool shell_membership_ubpol2amt(
845 int,
846 membership_mode,
847 FILE*
848);
849
857bool shell_membership_ubpol2gr(
858 int,
859 membership_mode,
860 FILE*
861);
862
870bool shell_membership_ubpol2dd(
871 int,
872 membership_mode,
873 FILE*
874);
875
883bool shell_membership_ubpol2modp(
884 int,
885 membership_mode,
886 FILE*
887);
888
896bool shell_membership_ubpol2amtp(
897 int,
898 membership_mode,
899 FILE*
900);
901
909bool shell_membership_ubpol2grp(
910 int,
911 membership_mode,
912 FILE*
913);
914
915/******************/
916/* Temporal logic */
917/******************/
918
926bool shell_membership_ul(
927 int,
928 membership_mode,
929 FILE*
930);
931
939bool shell_membership_tlmod(
940 int,
941 membership_mode,
942 FILE*
943);
944
952bool shell_membership_tlamt(
953 int,
954 membership_mode,
955 FILE*
956);
957
965bool shell_membership_tlgr(
966 int,
967 membership_mode,
968 FILE*
969);
970
978bool shell_membership_tldd(
979 int,
980 membership_mode,
981 FILE*
982);
983
991bool shell_membership_tlmodp(
992 int,
993 membership_mode,
994 FILE*
995);
996
1004bool shell_membership_tlamtp(
1005 int,
1006 membership_mode,
1007 FILE*
1008);
1009
1017bool shell_membership_tlgrp(
1018 int,
1019 membership_mode,
1020 FILE*
1021);
1022
1030bool shell_membership_tl2st(
1031 int,
1032 membership_mode,
1033 FILE*
1034);
1035
1043bool shell_membership_tl2mod(
1044 int,
1045 membership_mode,
1046 FILE*
1047);
1048
1056bool shell_membership_tl2amt(
1057 int,
1058 membership_mode,
1059 FILE*
1060);
1061
1069bool shell_membership_tl2gr(
1070 int,
1071 membership_mode,
1072 FILE*
1073);
1074
1082bool shell_membership_tl2dd(
1083 int,
1084 membership_mode,
1085 FILE*
1086);
1087
1095bool shell_membership_tl2modp(
1096 int,
1097 membership_mode,
1098 FILE*
1099);
1100
1108bool shell_membership_tl2amtp(
1109 int,
1110 membership_mode,
1111 FILE*
1112);
1113
1121bool shell_membership_tl2grp(
1122 int,
1123 membership_mode,
1124 FILE*
1125);
1126
1134bool shell_membership_fl(
1135 int,
1136 membership_mode,
1137 FILE*
1138);
1139
1147bool shell_membership_flmod(
1148 int,
1149 membership_mode,
1150 FILE*
1151);
1152
1160bool shell_membership_flamt(
1161 int,
1162 membership_mode,
1163 FILE*
1164);
1165
1173bool shell_membership_flgr(
1174 int,
1175 membership_mode,
1176 FILE*
1177);
1178
1186bool shell_membership_fldd(
1187 int,
1188 membership_mode,
1189 FILE*
1190);
1191
1199bool shell_membership_flmodp(
1200 int,
1201 membership_mode,
1202 FILE*
1203);
1204
1212bool shell_membership_flamtp(
1213 int,
1214 membership_mode,
1215 FILE*
1216);
1217
1225bool shell_membership_flgrp(
1226 int,
1227 membership_mode,
1228 FILE*
1229);
1230
1238bool shell_membership_fl2st(
1239 int,
1240 membership_mode,
1241 FILE*
1242);
1243
1251bool shell_membership_fl2mod(
1252 int,
1253 membership_mode,
1254 FILE*
1255);
1256
1264bool shell_membership_fl2amt(
1265 int,
1266 membership_mode,
1267 FILE*
1268);
1269
1277bool shell_membership_fl2gr(
1278 int,
1279 membership_mode,
1280 FILE*
1281);
1282
1290bool shell_membership_fl2dd(
1291 int,
1292 membership_mode,
1293 FILE*
1294);
1295
1303bool shell_membership_fl2modp(
1304 int,
1305 membership_mode,
1306 FILE*
1307);
1308
1316bool shell_membership_fl2amtp(
1317 int,
1318 membership_mode,
1319 FILE*
1320);
1321
1329bool shell_membership_fl2grp(
1330 int,
1331 membership_mode,
1332 FILE*
1333);
1334
1342bool shell_membership_pl(
1343 int,
1344 membership_mode,
1345 FILE*
1346);
1347
1355bool shell_membership_plmod(
1356 int,
1357 membership_mode,
1358 FILE*
1359);
1360
1368bool shell_membership_plamt(
1369 int,
1370 membership_mode,
1371 FILE*
1372);
1373
1381bool shell_membership_plgr(
1382 int,
1383 membership_mode,
1384 FILE*
1385);
1386
1394bool shell_membership_pldd(
1395 int,
1396 membership_mode,
1397 FILE*
1398);
1399
1407bool shell_membership_plmodp(
1408 int,
1409 membership_mode,
1410 FILE*
1411);
1412
1420bool shell_membership_plamtp(
1421 int,
1422 membership_mode,
1423 FILE*
1424);
1425
1433bool shell_membership_plgrp(
1434 int,
1435 membership_mode,
1436 FILE*
1437);
1438
1446bool shell_membership_pl2st(
1447 int,
1448 membership_mode,
1449 FILE*
1450);
1451
1459bool shell_membership_pl2mod(
1460 int,
1461 membership_mode,
1462 FILE*
1463);
1464
1472bool shell_membership_pl2amt(
1473 int,
1474 membership_mode,
1475 FILE*
1476);
1477
1485bool shell_membership_pl2gr(
1486 int,
1487 membership_mode,
1488 FILE*
1489);
1490
1498bool shell_membership_pl2dd(
1499 int,
1500 membership_mode,
1501 FILE*
1502);
1503
1511bool shell_membership_pl2modp(
1512 int,
1513 membership_mode,
1514 FILE*
1515);
1516
1524bool shell_membership_pl2amtp(
1525 int,
1526 membership_mode,
1527 FILE*
1528);
1529
1537bool shell_membership_pl2grp(
1538 int,
1539 membership_mode,
1540 FILE*
1541);
1542
1543/***************/
1544/* Hierarchies */
1545/***************/
1546
1551void shell_chiera_summary(
1552 int i,
1553 FILE* out
1554);
1555
1560void shell_navhiera_summary(
1561 int i,
1562 FILE* out
1563);
1564
1565
1566
1571bool shell_neghiera(classes cl,
1572 int i,
1573 FILE* out
1574);
1575
1580bool shell_fphiera(classes cl,
1581 int i,
1582 FILE* out
1583);
1584
1585/***********************/
1586/* Examples generators */
1587/***********************/
1588
1589typedef enum {
1590 EXAGEN_ALL,
1591 EXAGEN_DETHIERA,
1592 EXAGEN_FPHIERA,
1593 EXAGEN_SIZE
1594} exagen_mode;
1595
1596typedef struct {
1597 exagen_mode mode;
1598 classes low[16];
1599 uint nblow;
1600 classes high[16];
1601 uint nbhigh;
1603 int alpha;
1604 uint64_t done;
1605 uint64_t nb_found;
1606 uint64_t size_found;
1607 uint64_t* found;
1610
1611void shell_memb_file(const char* filename);
1612
1613void shell_file_retrieve(const char* filename, const char* pref);
1614
1620void shell_exall(
1621 classes* low,
1622 int nblow,
1623 classes* high,
1624 int nbhigh,
1625 int states,
1626 int alpha,
1627 const char* prefix
1628);
1629
1635void shell_exall_dethiera(
1636 classes cl,
1637 int level,
1638 int states,
1639 int alpha,
1640 const char* prefix,
1641 bool neg
1643);
1644
1645// /**
1646// * @brief
1647// * Searches for random DFAs satisfying a given set of membership constraints.
1648// */
1649// bool shell_exsearch(com_parameters* //!< Command parameters (should include
1650// the size of the DFAs and the membership constraints).
1651// );
1652
1653bool shell_exall_dfatest(void);
1654
1655void shell_make_timestats(classes cl, int states, int alpha);
1656
1657void shell_bugsearch(classes cl, int states, int alpha, const char* prefix);
1658
1659#endif
Macros and functions to help memory allocation.
Computations of congruences on monoids. Deterministic hierarchies.
Tests of properties on morphisms.
Enumeration of DFAs.
Definition shell_memb.h:1596
uint64_t * found
Array of indices of the DFAs found.
Definition shell_memb.h:1607
int alpha
Size of the alphabet of the DFAs to be generated.
Definition shell_memb.h:1603
uint nblow
Number of classes for negative tests (maximum 16).
Definition shell_memb.h:1599
int states
Number of states of the DFAs to be generated.
Definition shell_memb.h:1602
exagen_mode mode
Mode of the example generation.
Definition shell_memb.h:1597
uint nbhigh
Number of classes for positive tests (maximum 16).
Definition shell_memb.h:1601
uint64_t size_found
Size of the array of DFAs found.
Definition shell_memb.h:1606
bool finished
True if the search is finished.
Definition shell_memb.h:1608
uint64_t done
Number of indices already handled.
Definition shell_memb.h:1604
classes high[16]
Classes for positive tests.
Definition shell_memb.h:1600
classes low[16]
Classes for negative tests.
Definition shell_memb.h:1598
uint64_t nb_found
Number of DFAs found.
Definition shell_memb.h:1605