For direct computations of canonical labelings of sequences. A transformation is a sequence, for example. Non-morphic! Functions can be continued from partial labelings.
For direct computations of canonical labelings of sequences. A transformation is a sequence, for example. Non-morphic! Functions can be continued from partial labelings.
Combinatorics stuff that is not readily available in the contrib package.
Combinatorics stuff that is not readily available in the contrib package.
Brauer-monoid direct implementation. A degree n diagram is represented by a single vector of length 2n. The value at position i is the image of point i.
Brauer-monoid direct implementation. A degree n diagram is represented by a single vector of length 2n. The value at position i is the image of point i.
partitioned binary relations stored as maps: integers -> set of integers e.g. {1 #{1 2}, 2 #{2}} for degree n, domain is 1..n, codomain is n+1..2n e.g. degree 3, domain is {1,2,3}, codomain is {4,5,6}
partitioned binary relations stored as maps: integers -> set of integers e.g. {1 #{1 2}, 2 #{2}} for degree n, domain is 1..n, codomain is n+1..2n e.g. degree 3, domain is {1,2,3}, codomain is {4,5,6}
Transformations and permutations simply representated as vectors.
Transformations and permutations simply representated as vectors.
'Native' conjugacy class representative calculation. Transformations are separated into single point mappings of the form [source image]. A permutation is constructed by finding the minimal relabeling of a transformation.
'Native' conjugacy class representative calculation. Transformations are separated into single point mappings of the form [source image]. A permutation is constructed by finding the minimal relabeling of a transformation.
Transformations and permutations embedded into partitioned binary relations.
Transformations and permutations embedded into partitioned binary relations.
Deciding directed graph isomorphism. Directed graphs (digraphs) are sequences of source-target pairs. Vertices are non-negative integers.
Deciding directed graph isomorphism. Directed graphs (digraphs) are sequences of source-target pairs. Vertices are non-negative integers.
Some properties of the directed graph, possibly used as isomoprhism invariants.
Some properties of the directed graph, possibly used as isomoprhism invariants.
Function for checking and creating transitivity.
Function for checking and creating transitivity.
Functions for transferring data between GAP and kigen.
Functions for transferring data between GAP and kigen.
Computing Cayley-graphs.
Computing Cayley-graphs.
Chains in partially ordered sets given by their Hasse diagrams. A Hasse diagram is a hash-map from elements to the set of related elements.
Chains in partially ordered sets given by their Hasse diagrams. A Hasse diagram is a hash-map from elements to the set of related elements.
Chain semigroups based on a skeleton.
Chain semigroups based on a skeleton.
Computing partially ordered sets. Ways of defining binary relations:
Computing partially ordered sets. Ways of defining binary relations: 1. elements and a relation function (implicit) 2. a map: element x -> set of related elements (explicit)
Strongly connected components of digraphs.
Strongly connected components of digraphs.
Skeleton of a transformation semigroup given by a set of generators.
Skeleton of a transformation semigroup given by a set of generators.
Further relations (goals) and utility functions to extend core.logic.
Further relations (goals) and utility functions to extend core.logic.
Simple matrix computations.
Simple matrix computations.
Information about memory usage.
Information about memory usage.
The most abstract description morphic relations and functions. morph-m - called 'morphism map', morphisms are represented as hash-maps, thus they can be partially defined
The most abstract description morphic relations and functions. morph-m - called 'morphism map', morphisms are represented as hash-maps, thus they can be partially defined
Getting the indices of elements in vectors by giving a predicate or by equality. Linear-time algorithms.
Getting the indices of elements in vectors by giving a predicate or by equality. Linear-time algorithms.
Producing actions from binary functions.
Producing actions from binary functions.
Abstract functions for calculating conjugate elements, conjugacy classes, and representatives.
Abstract functions for calculating conjugate elements, conjugacy classes, and representatives.
Constructing isomorphisms/embeddings between semigroups given by generators. In other words, searching for an isomorphisms of Cayley-graphs. The elements of both semigroups are fully enumerated. The source semigroup is converted to generator table (partial multiplication table containing all the images of right multiplication by generators). The elements of target semigroups are classified by their index-periods in order to find possible targets for generators. Canonical notation for the data structure for Cayley-graph matching is M. It's a hasmap with keys :phi :Sgens :Smul :Tmul. Phi is the morphism (hash-map) that is induced by matching the (sub)semigroup generated by :Sgens.
Constructing isomorphisms/embeddings between semigroups given by generators. In other words, searching for an isomorphisms of Cayley-graphs. The elements of both semigroups are fully enumerated. The source semigroup is converted to generator table (partial multiplication table containing all the images of right multiplication by generators). The elements of target semigroups are classified by their index-periods in order to find possible targets for generators. Canonical notation for the data structure for Cayley-graph matching is M. It's a hasmap with keys :phi :Sgens :Smul :Tmul. Phi is the morphism (hash-map) that is induced by matching the (sub)semigroup generated by :Sgens.
Black box algorithms to compute Green's relations. Basic implementations, not efficient ones. Suitable for small semigroups, written for processing the enumerated transformation semigroups.
Black box algorithms to compute Green's relations. Basic implementations, not efficient ones. Suitable for small semigroups, written for processing the enumerated transformation semigroups.
General functions for semigroups. Black box style, the element(s) and the operation need to be supplied.
General functions for semigroups. Black box style, the element(s) and the operation need to be supplied.
General functions for computing subsemigroups. Black box style, the element(s) and the operation need to be supplied.
General functions for computing subsemigroups. Black box style, the element(s) and the operation need to be supplied.
Enumerating all semigroup(oid)s using relational programming. Semigroupoids are represented as composition tables, a vector of vectors.
Enumerating all semigroup(oid)s using relational programming. Semigroupoids are represented as composition tables, a vector of vectors.
Finding all homomorphisms of a semigroupoid into another one by using relational programming. Semigroupoids are represented abstractly, as composition tables, a vector of vectors. For non-composable arrow pairs the corresponding entry is :n.
Finding all homomorphisms of a semigroupoid into another one by using relational programming. Semigroupoids are represented abstractly, as composition tables, a vector of vectors. For non-composable arrow pairs the corresponding entry is :n.
Transformation semigroupoids. :s - source, domain, integer 0..n-1 :t - target, codomain, integer 0..n-1 :m - morphism, map
Transformation semigroupoids. :s - source, domain, integer 0..n-1 :t - target, codomain, integer 0..n-1 :m - morphism, map
Functions for the type structure of a semigroupoid.
Functions for the type structure of a semigroupoid.
Generator tables - multiplication tables defined only for multiplying by generators.
Generator tables - multiplication tables defined only for multiplying by generators.
Independent sets of semigroups represented by multiplication tables.
Independent sets of semigroups represented by multiplication tables.
Functions for dealing with abstract multiplication tables of semigroups. The multiplicative elements are represented by their indices in a given sequence. The tables are vectors of vectors (the rows of the table), so multiplication is just a constant-time look up. Functionality for multiplying subsets of elements and computing closures and thus enumerating subsemigroups. The subsemigroups can be stored in efficient int-sets.
Functions for dealing with abstract multiplication tables of semigroups. The multiplicative elements are represented by their indices in a given sequence. The tables are vectors of vectors (the rows of the table), so multiplication is just a constant-time look up. Functionality for multiplying subsets of elements and computing closures and thus enumerating subsemigroups. The subsemigroups can be stored in efficient int-sets.
Constructing morphisms and morphic relations for multiplication tables. input: two multiplication tables (source, target) output: hash-maps describing morphisms, index i -> image
These functions are relatively inefficient (compared to generator table methods). They are for reference purposes, not for the high-end computations.
This is a reference implementation for the paper: Finite Computational Structures and Implementations: Semigroups and Morphic Relations International Journal of Networking and Computing, Volume 7, Number 2, pages 318-335, July 2017 https://doi.org/10.15803/ijnc.7.2_318
Constructing morphisms and morphic relations for multiplication tables. input: two multiplication tables (source, target) output: hash-maps describing morphisms, index i -> image These functions are relatively inefficient (compared to generator table methods). They are for reference purposes, not for the high-end computations. This is a reference implementation for the paper: Finite Computational Structures and Implementations: Semigroups and Morphic Relations International Journal of Networking and Computing, Volume 7, Number 2, pages 318-335, July 2017 https://doi.org/10.15803/ijnc.7.2_318
Lossless machine learning: constructing a single symbol output transducer from input word, output symbol pairs by logic programming. In other words, constructing a Moore-machine. https://en.wikipedia.org/wiki/Moore_machine There are several implementations for representing the transducer. These are the common functions. delta - the state transition table is a nested associative data structure (map or vector) (delta input) gives a transformation of the state set
Lossless machine learning: constructing a single symbol output transducer from input word, output symbol pairs by logic programming. In other words, constructing a Moore-machine. https://en.wikipedia.org/wiki/Moore_machine There are several implementations for representing the transducer. These are the common functions. delta - the state transition table is a nested associative data structure (map or vector) (delta input) gives a transformation of the state set
FIXED OUTPUT TRANSDUCER CONSTRUCTION This is the first working version of transducer synthesis so it is somewhat of a legacy code. The input-output pairs need to be given in the internal representation (nonnegative integers) thus the output of the Moore automaton is hardcoded. Consequently, there is the issue of using the initial state 0 as an output which may be a too rigid constraint.
FIXED OUTPUT TRANSDUCER CONSTRUCTION This is the first working version of transducer synthesis so it is somewhat of a legacy code. The input-output pairs need to be given in the internal representation (nonnegative integers) thus the output of the Moore automaton is hardcoded. Consequently, there is the issue of using the initial state 0 as an output which may be a too rigid constraint.
FLEXIBLE INPUT OUTPUT TRANSDUCER CONSTRUCTION input words can be sequences of any type of distinct entities similarly outputs can be of any types internal states are nonnegtaive integers
FLEXIBLE INPUT OUTPUT TRANSDUCER CONSTRUCTION input words can be sequences of any type of distinct entities similarly outputs can be of any types internal states are nonnegtaive integers
To find partially defined transducers, this method has the states in all trajectories as the logic variables. Then the individual maps are extracted and used to define the partial transformations. This method is inefficient as complexity of the search grows with the number and the length of the input words.
To find partially defined transducers, this method has the states in all trajectories as the logic variables. Then the individual maps are extracted and used to define the partial transformations. This method is inefficient as complexity of the search grows with the number and the length of the input words.
Algorithm for minimizing a transducer.
Algorithm for minimizing a transducer.
A custom implementation of a search trie with the added feature that if there is no branching, then a (sub)word is stored as a sequential data structure. WARNING! The outputs are assumed to be different from the input symbols, as they are used as leaf nodes in the trie when constructing a transducer. The code is separated into two parts: 1. the trie data structure, 2. transducer generation.
A custom implementation of a search trie with the added feature that if there is no branching, then a (sub)word is stored as a sequential data structure. WARNING! The outputs are assumed to be different from the input symbols, as they are used as leaf nodes in the trie when constructing a transducer. The code is separated into two parts: 1. the trie data structure, 2. transducer generation.
FLEXIBLE INPUT OUTPUT TRANSDUCER CONSTRUCTION input words can be sequences of any type of distinct entities similarly outputs can be of any types internal states are nonnegtaive integers
FLEXIBLE INPUT OUTPUT TRANSDUCER CONSTRUCTION input words can be sequences of any type of distinct entities similarly outputs can be of any types internal states are nonnegtaive integers
cljdoc builds & hosts documentation for Clojure/Script libraries
Ctrl+k | Jump to recent docs |
← | Move to previous article |
→ | Move to next article |
Ctrl+/ | Jump to the search field |