All Projects → libsemigroups → libsemigroups

libsemigroups / libsemigroups

Licence: GPL-3.0 License
C++ library for semigroups and monoids

Programming Languages

C++
36643 projects - #6 most used programming language
M4
1887 projects
Makefile
30231 projects
shell
77523 projects
python
139335 projects - #7 most used programming language
GAP
223 projects
Jupyter Notebook
11667 projects

Projects that are alternatives of or similar to libsemigroups

Language Ext
C# functional language extensions - a base class library for functional programming
Stars: ✭ 3,964 (+11558.82%)
Mutual labels:  monoid, semigroup
PowEnum
Executes common PowerSploit Powerview functions then combines output into a spreadsheet for easy analysis.
Stars: ✭ 62 (+82.35%)
Mutual labels:  enumeration
HostEnumerator
A tool that automates the process of enumeration
Stars: ✭ 29 (-14.71%)
Mutual labels:  enumeration
onedrive user enum
onedrive user enumeration - pentest tool to enumerate valid onedrive users
Stars: ✭ 223 (+555.88%)
Mutual labels:  enumeration
Monoidz-kata
Various kata & content to learn and practice design with monoidz inside
Stars: ✭ 16 (-52.94%)
Mutual labels:  monoid
Bracmat
Programming language for symbolic computation with unusual combination of pattern matching features: Tree patterns, associative patterns and expressions embedded in patterns.
Stars: ✭ 42 (+23.53%)
Mutual labels:  computer-algebra
Semigroups
The GAP package Semigroups
Stars: ✭ 21 (-38.24%)
Mutual labels:  enumeration
Swiftz-Validation
A data structure for validations. It implements the applicative functor interface
Stars: ✭ 15 (-55.88%)
Mutual labels:  semigroup
WinEnum
Script for Local Windows Enumeration
Stars: ✭ 30 (-11.76%)
Mutual labels:  enumeration
brutas
Wordlists and passwords handcrafted with ♥
Stars: ✭ 32 (-5.88%)
Mutual labels:  enumeration
gonum
An enum generator for Go
Stars: ✭ 26 (-23.53%)
Mutual labels:  enumeration
Reconky-Automated Bash Script
Reconky is an great Content Discovery bash script for bug bounty hunters which automate lot of task and organized in the well mannered form which help them to look forward.
Stars: ✭ 167 (+391.18%)
Mutual labels:  enumeration
fransRecon
Script will enumerate domain name using horizontal enumeration, reverse lookup. Each horziontal domain will then be vertically enumerated using Sublist3r.
Stars: ✭ 31 (-8.82%)
Mutual labels:  enumeration
Hecke.jl
Computational algebraic number theory
Stars: ✭ 142 (+317.65%)
Mutual labels:  computer-algebra
obake
A C++20 library for the symbolic manipulation of sparse polynomials & co.
Stars: ✭ 16 (-52.94%)
Mutual labels:  computer-algebra
meta enumerator
C++14 library to enhance enumerator capabilities, including arbitrary length, statically allocated, strongly typed masks.
Stars: ✭ 21 (-38.24%)
Mutual labels:  enumeration
bromberg sl2
Cayley hashing as in "Navigating in the Cayley Graph of SL₂(𝔽ₚ)"
Stars: ✭ 32 (-5.88%)
Mutual labels:  monoid
Enum.py
A tool to enumerate network services
Stars: ✭ 23 (-32.35%)
Mutual labels:  enumeration
data-algorithms-with-spark
O'Reilly Book: [Data Algorithms with Spark] by Mahmoud Parsian
Stars: ✭ 34 (+0%)
Mutual labels:  monoid
enumerations
Better Rails Enumerations
Stars: ✭ 34 (+0%)
Mutual labels:  enumeration

libsemigroups - Version 2.1.3

Documentation Status Launch Binder https://img.shields.io/conda/dn/conda-forge/libsemigroups

C++ library for semigroups and monoids

What is libsemigroups?

libsemigroups is a C++14 library containing implementations of several algorithms for computing finite, and finitely presented, semigroups and monoids. Namely:

libsemigroups is partly based on Algorithms for computing finite semigroups, Expository Slides, and Semigroupe 2.01 by Jean-Eric Pin.

libsemigroups is used in the Semigroups package for GAP, and it is possible to use libsemigroups directly in Python 3 via the package libsemigroups_pybind11. The development version of libsemigroups is available on github, and some related projects are here.

The main classes in libsemigroups are named after the algorithms they implement; see, for example, libsemigroups::FroidurePin, libsemigroups::Konieczny, libsemigroups::congruence::ToddCoxeter, libsemigroups::fpsemigroup::Kambites, libsemigroups::fpsemigroup::KnuthBendix, and libsemigroups::SchreierSims.

The implementations in libsemigroups::FroidurePin, libsemigroups::Konieczny, and libsemigroups::SchreierSims are generic and easily adapted to user-defined types.

libsemigroups uses: HPCombi which uses the SSE and AVX instruction sets for very fast manipulation of transformations, partial permutations, permutations, and boolean matrices of small size; catch for tests; fmt for reporting; and eigen for some linear algebra computations.

How to use it

See the documentation https://libsemigroups.readthedocs.io/en/latest/

Installation instructions are here https://libsemigroups.readthedocs.io/en/latest/install.html

Issues

If you find any problems with libsemigroups, or have any suggestions for features that you'd like to see, please use the issue tracker.

Author

J. D. Mitchell

Contributors

  • R. Cirpons contributed to IsObviouslyInfinite, to integrating eigen, and contributed an implementation of the Radoszewski-Rytter algorithm for testing equivalence of words in free bands.
  • F. Hivert contributed many helpful ideas to libsemigroups, an allocator implementation (to be included in a future version), and HPCombi.
  • J. James contributed some bugfixes.
  • J. Jonušas contributed to the implementation of the Froidure-Pin algorithm.
  • D. V. Pasechnik contributed to the build system.
  • F. Smith contributed the implementation of the Konieczny and Lallement-McFadden algorithm, to the Todd-Coxeter implementation, and to BMat8s.
  • N. Thiery contributed to the build system, packaging libsemigroups via conda, the python bindings and many helpful conversations and suggestions.
  • M. Torpey contributed to the congruences code in the v0.0.1 to v0.6.7.
  • M. Tsalakou contributed to the Knuth-Bendix implementation, related algorithms for the class ActionDigraph, and to the implementation of the Kambites class.

Acknowledgements

We acknowledge financial support from the OpenDreamKit Horizon 2020 European Research Infrastructures project (#676541) (primarily for the python bindings).

We thank the Carnegie Trust for the Universities of Scotland for funding the PhD scholarship of J. Jonušas when he worked on this project.

We thank the Engineering and Physical Sciences Research Council (EPSRC) for funding the PhD scholarships of M. Torpey and F. Smith when they worked on this project (EP/M506631/1, EP/N509759/1).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].