Mescal
Loading...
Searching...
No Matches
monoid_props.h
Go to the documentation of this file.
1
6
7#ifndef MONO_PROPS_H
8#define MONO_PROPS_H
9
10#include <stdbool.h>
11#include <stdlib.h>
12#include "nfa.h"
13#include "monoid.h"
14#include "monoid_orbits.h"
15#include "monoid_kernels.h"
16#include "sep_group.h"
17
18 /* __ __ _ _ ____ _ _ */
19 /* | \/ | ___ _ __ ___ (_) __| |___ _ | _ \ _ __ ___ _ __ ___ _ __| |_(_) ___ ___ */
20 /* | |\/| |/ _ \| '_ \ / _ \| |/ _` / __(_) | |_) | '__/ _ \| '_ \ / _ \ '__| __| |/ _ \/ __| */
21 /* | | | | (_) | | | | (_) | | (_| \__ \_ | __/| | | (_) | |_) | __/ | | |_| | __/\__ \ */
22 /* |_| |_|\___/|_| |_|\___/|_|\__,_|___(_) |_| |_| \___/| .__/ \___|_| \__|_|\___||___/ */
23 /* |_| */
24
29typedef enum
30{
31 H_GREEN,
32 L_GREEN,
33 R_GREEN,
34 J_GREEN,
36
37extern char green_rel_array[4];
38
39
40/***********/
41/* Trivial */
42/***********/
43
56 uint*
57);
58
71 uint*
72);
73
86 uint*
87);
88
101 uint*
102);
103
104
105
106
107/**********/
108/* Groups */
109/**********/
110
123 uint*
124);
125
138 uint*
139);
140
153 uint*
154);
155
168 uint*
169);
170
171
184 uint*
185);
186
187
188
189/*****************/
190/* Commutativity */
191/*****************/
192
205 uint*
206);
207
208
221 uint*
222);
223
236 uint*
237);
238
252 uint*
253);
254
255
256/***************/
257/* Idempotence */
258/***************/
259
272 uint*
273);
274
287 uint*
288);
289
290
303 uint*
304);
305
306/*******************/
307/* H,R,L,J-trivial */
308/*******************/
309parti* grel_to_parti(green* G, green_relation P);
310
324 uint*
325);
326
340 uint*
341);
342
357 uint*
358);
359
360
373 uint*
374);
375
376
377/******/
378/* DA */
379/******/
380
381
393bool is_da_mono(morphism*,
394 uint*
395);
396
409 uint*
410);
411
424bool is_da_orbmono(orbits*,
425 uint*
426);
427
428/****************/
429/* J-saturated */
430/****************/
431
447 uint*
448);
449
465 uint*
466);
467
483 uint,
484 uint*
485);
486
487
504 uint*
505);
506
507
508
509
510
511/*********/
512/* Knast */
513/*********/
514
527 uint*
528);
529
546 uint*
547);
548
549
566 uint*
567);
568
580bool is_knast_mono(orbits*,
581 uint*
582);
583
598bool is_knast_ker(orbits*,
599 subsemi*,
600 uint*
601);
602
603
620 uint*
621);
622
638 uint*
639);
640
641
642
643
656 uint* cexa
657);
658
659
660/*********************/
661/* UPolBPol Equation */
662/*********************/
663
676bool is_upbp_mono(orbits*,
677 uint*
678);
679
680
681#endif
Implementation of morphisms into finite monoids.
Computation of kernels.
Computation of orbits.
bool is_da_subsemi(subsemi *, uint *)
Tests is a subsemigroup is in DA.
Definition monoid_props.c:506
bool is_group_semigroup(morphism *, uint *)
Tests if a semigroup (image of A⁺) is a group.
Definition monoid_props.c:89
bool is_letterind_mono(morphism *, uint *)
Tests if a morphism maps all letters to the same element.
Definition monoid_props.c:142
bool is_jsat_orbmono(orbits *, uint *)
Tests if all orbits satisfy the equation 1 ≤ s.
Definition monoid_props.c:617
bool is_trivial_semigroup(morphism *, uint *)
Tests if a semigroup (image of A⁺) is trivial.
Definition monoid_props.c:25
bool is_idem_subsemi(subsemi *, uint *)
Tests if a subsemigroup is idempotent.
Definition monoid_props.c:316
bool is_upbp_mono(orbits *, uint *)
Tests if a morphism satisfies the UPol(BPol(C)) equation for a given class C. The C-orbits are taken ...
Definition monoid_props.c:1307
bool is_comm_subsemi(subsemi *, uint *)
Tests is a subsemigroup is commutative.
Definition monoid_props.c:183
bool is_gtrivial_mono(morphism *, green_relation, uint *)
Tests if a monoid is P-trivial where P is one of the four Green relations (H,R,L,J).
Definition monoid_props.c:372
bool is_group_mono(morphism *, uint *)
Tests if a monoid is a group.
Definition monoid_props.c:75
bool is_knast_ker(orbits *, subsemi *, uint *)
Tests if the G-kernel satisfies Knast's equation for a group vari G.
Definition monoid_props.c:942
bool is_knast_at_mono(morphism *M, uint *cexa)
Tests if a morphism satisfies the AT-variant of Knast's equation.
Definition monoid_props.c:1192
bool is_htrivial_generators(morphism *, uint *)
Tests if the H-classes of 1 and all generators are trivial.
Definition monoid_props.c:444
bool is_trivial_orbmono(orbits *, uint *)
Tests if all orbits are trivial.
Definition monoid_props.c:56
bool is_comm_ltt_mono(orbits *, uint *)
Tests if a morphism satisfies the specific commutativity equation of the class LTT.
Definition monoid_props.c:215
bool is_bpolgrp_mono(orbits *, uint *)
Tests if a morphism satisfies the BPol(GR⁺) equation.
Definition monoid_props.c:1104
bool is_jsat_mono(morphism *, uint *)
Tests if a morphism satisfies the equation 1 ≤ s.
Definition monoid_props.c:544
bool is_idem_mono(morphism *, uint *)
Tests if a monoid is idempotent.
Definition monoid_props.c:299
bool is_group_orbmono(orbits *, uint *)
Tests if all orbits are groups.
Definition monoid_props.c:129
bool is_bpolmod_mono(morphism *, uint *)
Tests if a morphism satisfies the BPol(MOD) equation.
Definition monoid_props.c:730
bool is_ejsat_mono(morphism *, uint *)
Tests if a morphism satisfies the equation 1 ≤ e (for every idempotent e).
Definition monoid_props.c:563
bool is_knast_mono(orbits *, uint *)
Tests if a morphism satisfies Knast's equation.
Definition monoid_props.c:859
bool is_gtrivial_orbmono(orbits *, green_relation, uint *)
Tests if all orbits are P-trivial where P is one of the four Green relations (H,R,...
Definition monoid_props.c:431
green_relation
The four Green relations.
Definition monoid_props.h:30
bool is_com_orbmono(orbits *, uint *)
Tests if all orbits are commutative.
Definition monoid_props.c:203
bool is_da_mono(morphism *, uint *)
Tests if a monoid is in DA.
Definition monoid_props.c:478
bool is_trivial_subsemi(subsemi *, uint *)
Tests if a subsemigroup is trivial.
Definition monoid_props.c:45
bool is_gtrivial_subsemi(subsemi *, green_relation, uint *)
Tests if a subsemigroup is P-trivial where P is one of the four Green relations (H,...
Definition monoid_props.c:403
bool is_jsat_subsemi(subsemi *, uint, uint *)
Tests if a subsemigroup satisfies the equation 1 ≤ s.
Definition monoid_props.c:589
bool is_bpolamtp_mono(orbits *, uint *)
Tests if a morphism satisfies the BPol(AMT⁺) equation.
Definition monoid_props.c:1024
bool is_idem_orbmono(orbits *, uint *)
Tests if all orbits are simultaneously commutative and idempotent.
Definition monoid_props.c:332
bool is_blockg_mono(morphism *, uint *)
Tests if a monoid is a block group.
Definition monoid_props.c:640
bool is_group_subsemi(subsemi *, uint *)
Tests if a subsemigroup is a group.
Definition monoid_props.c:111
bool is_da_orbmono(orbits *, uint *)
Tests if all orbits are in DA.
Definition monoid_props.c:527
bool is_comm_mono(morphism *, uint *)
Tests is a monoid is commutative.
Definition monoid_props.c:162
bool is_bpolamt_mono(morphism *, uint *)
Tests if a morphism satisfies the BPol(AMT) equation.
Definition monoid_props.c:798
bool is_trivial_monoid(morphism *, uint *)
Tests if a monoid is trivial.
Definition monoid_props.c:14
Implementation of NFAs.
Separation by group languages.
Type used to represent the Green relations of a finite monoid.
Definition monoid.h:69
The type used to represent a morphism into a finite monoid.
Definition monoid.h:91
Type used to represent C-orbits of a morphism.
Definition monoid_orbits.h:31
First type used to represent a partition. This is not the one used by Union-Find.
Definition type_partitions.h:36
Type used to represent a subsemigroup and its Green relations.
Definition monoid_sub.h:35