Mescal
|
Tests of properties on morphisms. More...
#include <stdbool.h>
#include <stdlib.h>
#include "nfa.h"
#include "monoid.h"
#include "monoid_orbits.h"
#include "monoid_kernels.h"
#include "sep_group.h"
Go to the source code of this file.
Enumerations | |
enum | green_relation { H_GREEN , L_GREEN , R_GREEN , J_GREEN } |
The four Green relations. | |
Functions | |
bool | is_trivial_monoid (morphism *, uint *) |
Tests if a monoid is trivial. | |
bool | is_trivial_semigroup (morphism *, uint *) |
Tests if a semigroup (image of A⁺) is trivial. | |
bool | is_trivial_subsemi (subsemi *, uint *) |
Tests if a subsemigroup is trivial. | |
bool | is_trivial_orbmono (orbits *, uint *) |
Tests if all orbits are trivial. | |
bool | is_group_mono (morphism *, uint *) |
Tests if a monoid is a group. | |
bool | is_group_semigroup (morphism *, uint *) |
Tests if a semigroup (image of A⁺) is a group. | |
bool | is_group_subsemi (subsemi *, uint *) |
Tests if a subsemigroup is a group. | |
bool | is_group_orbmono (orbits *, uint *) |
Tests if all orbits are groups. | |
bool | is_letterind_mono (morphism *, uint *) |
Tests if a morphism maps all letters to the same element. | |
bool | is_comm_mono (morphism *, uint *) |
Tests is a monoid is commutative. | |
bool | is_comm_subsemi (subsemi *, uint *) |
Tests is a subsemigroup is commutative. | |
bool | is_com_orbmono (orbits *, uint *) |
Tests if all orbits are commutative. | |
bool | is_comm_ltt_mono (orbits *, uint *) |
Tests if a morphism satisfies the specific commutativity equation of the class LTT. | |
bool | is_idem_mono (morphism *, uint *) |
Tests if a monoid is idempotent. | |
bool | is_idem_subsemi (subsemi *, uint *) |
Tests if a subsemigroup is idempotent. | |
bool | is_idem_orbmono (orbits *, uint *) |
Tests if all orbits are simultaneously commutative and idempotent. | |
parti * | grel_to_parti (green *G, green_relation P) |
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). | |
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,R,L,J). | |
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,L,J). | |
bool | is_htrivial_generators (morphism *, uint *) |
Tests if the H-classes of 1 and all generators are trivial. | |
bool | is_da_mono (morphism *, uint *) |
Tests if a monoid is in DA. | |
bool | is_da_subsemi (subsemi *, uint *) |
Tests is a subsemigroup is in DA. | |
bool | is_da_orbmono (orbits *, uint *) |
Tests if all orbits are in DA. | |
bool | is_jsat_mono (morphism *, uint *) |
Tests if a morphism satisfies the equation 1 ≤ s. | |
bool | is_ejsat_mono (morphism *, uint *) |
Tests if a morphism satisfies the equation 1 ≤ e (for every idempotent e). | |
bool | is_jsat_subsemi (subsemi *, uint, uint *) |
Tests if a subsemigroup satisfies the equation 1 ≤ s. | |
bool | is_jsat_orbmono (orbits *, uint *) |
Tests if all orbits satisfy the equation 1 ≤ s. | |
bool | is_blockg_mono (morphism *, uint *) |
Tests if a monoid is a block group. | |
bool | is_bpolmod_mono (morphism *, uint *) |
Tests if a morphism satisfies the BPol(MOD) equation. | |
bool | is_bpolamt_mono (morphism *, uint *) |
Tests if a morphism satisfies the BPol(AMT) equation. | |
bool | is_knast_mono (orbits *, uint *) |
Tests if a morphism satisfies Knast's equation. | |
bool | is_knast_ker (orbits *, subsemi *, uint *) |
Tests if the G-kernel satisfies Knast's equation for a group vari G. | |
bool | is_bpolamtp_mono (orbits *, uint *) |
Tests if a morphism satisfies the BPol(AMT⁺) equation. | |
bool | is_bpolgrp_mono (orbits *, uint *) |
Tests if a morphism satisfies the BPol(GR⁺) equation. | |
bool | is_knast_at_mono (morphism *M, uint *cexa) |
Tests if a morphism satisfies the AT-variant of Knast's equation. | |
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 as input. | |
Variables | |
char | green_rel_array [4] |
Tests of properties on morphisms.
Tests of properties on automata.
bool is_blockg_mono | ( | morphism * | M, |
uint * | c ) |
Tests if a monoid is a block group.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_bpolamt_mono | ( | morphism * | M, |
uint * | cexa ) |
Tests if a morphism satisfies the BPol(AMT) equation.
M | The morphism. |
cexa | Pointer on a uint array to return a counterexample. |
bool is_bpolamtp_mono | ( | orbits * | L, |
uint * | cexa ) |
Tests if a morphism satisfies the BPol(AMT⁺) equation.
L | The AMT⁺-orbits. |
cexa | Pointer on a uint array to return a counterexample. |
bool is_bpolgrp_mono | ( | orbits * | L, |
uint * | cexa ) |
Tests if a morphism satisfies the BPol(GR⁺) equation.
L | The GR⁺-orbits. |
cexa | Pointer on a uint array to return a counterexample. |
bool is_bpolmod_mono | ( | morphism * | M, |
uint * | cexa ) |
Tests if a morphism satisfies the BPol(MOD) equation.
M | The MOD-kernel. |
cexa | Pointer on a uint array to return a counterexample. |
bool is_com_orbmono | ( | orbits * | L, |
uint * | c ) |
Tests if all orbits are commutative.
L | The orbits. |
c | Pointer on a uint array to return a counterexample. |
bool is_comm_ltt_mono | ( | orbits * | L, |
uint * | c ) |
Tests if a morphism satisfies the specific commutativity equation of the class LTT.
L | The DD-orbits. |
c | Pointer on a uint array to return a counterexample. |
bool is_comm_mono | ( | morphism * | M, |
uint * | c ) |
Tests is a monoid is commutative.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_comm_subsemi | ( | subsemi * | S, |
uint * | c ) |
Tests is a subsemigroup is commutative.
S | The subsemigroup. |
c | Pointer on a uint array to return a counterexample. |
bool is_da_mono | ( | morphism * | M, |
uint * | c ) |
Tests if a monoid is in DA.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_da_orbmono | ( | orbits * | L, |
uint * | c ) |
Tests if all orbits are in DA.
L | The orbits. |
c | Pointer on a uint array to return a counterexample. |
bool is_da_subsemi | ( | subsemi * | S, |
uint * | c ) |
Tests is a subsemigroup is in DA.
S | The subsemigroup. |
c | Pointer on a uint array to return a counterexample. |
bool is_ejsat_mono | ( | morphism * | M, |
uint * | c ) |
Tests if a morphism satisfies the equation 1 ≤ e (for every idempotent e).
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_group_mono | ( | morphism * | M, |
uint * | c ) |
Tests if a monoid is a group.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_group_orbmono | ( | orbits * | L, |
uint * | c ) |
Tests if all orbits are groups.
L | The orbits. |
c | Pointer on a uint array to return a counterexample. |
bool is_group_semigroup | ( | morphism * | M, |
uint * | c ) |
Tests if a semigroup (image of A⁺) is a group.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_group_subsemi | ( | subsemi * | S, |
uint * | c ) |
Tests if a subsemigroup is a group.
S | The subsemigroup. |
c | Pointer on a uint array to return a counterexample. |
bool is_gtrivial_mono | ( | morphism * | M, |
green_relation | P, | ||
uint * | c ) |
Tests if a monoid is P-trivial where P is one of the four Green relations (H,R,L,J).
If the test fails and the second parameter is not NULL, it will be set to a counterexample: two elements that are P-equivalent (the first is idempotent).
M | The morphism. |
P | The relation to test (H,R,L or J). |
c | Pointer on a uint array to return a counterexample. |
bool is_gtrivial_orbmono | ( | orbits * | L, |
green_relation | P, | ||
uint * | c ) |
Tests if all orbits are P-trivial where P is one of the four Green relations (H,R,L,J).
If the test fails and the second parameter is not NULL, it will be set to a counterexample: two elements that are P-equivalent (the first is idempotent) plus the idempotent defining the orbit.
L | The orbits. |
P | The relation to test (H,R,L or J). |
c | Pointer on a uint array to return a counterexample. |
bool is_gtrivial_subsemi | ( | subsemi * | S, |
green_relation | P, | ||
uint * | c ) |
Tests if a subsemigroup is P-trivial where P is one of the four Green relations (H,R,L,J).
If the test fails and the second parameter is not NULL, it will be set to a counterexample: two elements that are P-equivalent (the first is idempotent).
S | Le subsemigroup. |
P | The relation to test (H,R,L or J). |
c | Pointer on a uint array to return a counterexample. |
bool is_htrivial_generators | ( | morphism * | M, |
uint * | c ) |
Tests if the H-classes of 1 and all generators are trivial.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_idem_mono | ( | morphism * | M, |
uint * | c ) |
Tests if a monoid is idempotent.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_idem_orbmono | ( | orbits * | L, |
uint * | c ) |
Tests if all orbits are simultaneously commutative and idempotent.
L | The orbits. |
c | Pointer on a uint array to return a counterexample. |
bool is_idem_subsemi | ( | subsemi * | S, |
uint * | c ) |
Tests if a subsemigroup is idempotent.
S | The subsemigroup. |
c | Pointer on a uint array to return a counterexample. |
bool is_jsat_mono | ( | morphism * | M, |
uint * | c ) |
Tests if a morphism satisfies the equation 1 ≤ s.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_jsat_orbmono | ( | orbits * | L, |
uint * | c ) |
Tests if all orbits satisfy the equation 1 ≤ s.
L | The orbits. |
c | Pointer on a uint array to return a counterexample. |
bool is_jsat_subsemi | ( | subsemi * | S, |
uint | ind, | ||
uint * | c ) |
Tests if a subsemigroup satisfies the equation 1 ≤ s.
S | The subsemigroup. |
ind | The index of the neutral element in the list of representative idempotents. |
c | Pointer on a uint array to return a counterexample. |
bool is_knast_at_mono | ( | morphism * | M, |
uint * | cexa ) |
Tests if a morphism satisfies the AT-variant of Knast's equation.
M | The morphism. |
cexa | Pointer on a uint array to return a counterexample. |
Tests if the G-kernel satisfies Knast's equation for a group vari G.
L | The G⁺-orbits. |
ker | The G-kernel. |
cexa | Pointer on a uint array to return a counterexample. |
bool is_knast_mono | ( | orbits * | L, |
uint * | cexa ) |
Tests if a morphism satisfies Knast's equation.
L | The DD-orbits of the morphism. |
cexa | Pointer on a uint array to return a counterexample. |
bool is_letterind_mono | ( | morphism * | M, |
uint * | c ) |
Tests if a morphism maps all letters to the same element.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_trivial_monoid | ( | morphism * | M, |
uint * | c ) |
Tests if a monoid is trivial.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_trivial_orbmono | ( | orbits * | L, |
uint * | c ) |
Tests if all orbits are trivial.
L | The orbits. |
c | Pointer on a uint array to return a counterexample. |
bool is_trivial_semigroup | ( | morphism * | M, |
uint * | c ) |
Tests if a semigroup (image of A⁺) is trivial.
M | The morphism. |
c | Pointer on a uint array to return a counterexample. |
bool is_trivial_subsemi | ( | subsemi * | S, |
uint * | c ) |
Tests if a subsemigroup is trivial.
S | The subsemigroup. |
c | Pointer on a uint array to return a counterexample. |
bool is_upbp_mono | ( | orbits * | L, |
uint * | cexa ) |
Tests if a morphism satisfies the UPol(BPol(C)) equation for a given class C. The C-orbits are taken as input.
L | The C-orbits of the morphism. |
cexa | Pointer on a uint array to return a counterexample. |