Skip to content

Commit 07b674a

Browse files
First commit
0 parents  commit 07b674a

57 files changed

Lines changed: 968 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
public/

.hugo_build.lock

Whitespace-only changes.

assets/favicon.ico

15 KB
Binary file not shown.

assets/images/favicon.png

698 Bytes
Loading
172 KB
Loading

assets/images/text_symbol.png

1.74 KB
Loading

content/en/_index.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
# Striking header background image, Ideal images are homogenous around the centre and contrasting to the text. Non-ideal images can use `title_guard`
3+
header_image: "images/smalloverlap_510x510.png"
4+
#
5+
# When set true, uses video from custom_header_video.html partial, instead of header_image
6+
header_use_video: false
7+
#
8+
# Optional header logo. CSS: `#blog-logo`, with max-height defined, optimize to prevent scaling
9+
header_logo: "images/text_symbolpng"
10+
#
11+
# Headers are safeHTML, you can use HTML tags such as b,i,u,br
12+
header_headline: "libsemigroups"
13+
header_subheadline: "library for semigroups & monoids"
14+
15+
# Add a 'Go back to top' item to the navigation menu
16+
# Title: name of navigation menu entry
17+
# Weight (i. e. position in menu): none = no menu entry, first = add as first entry, last = ad as last entry
18+
nav_to_top_title: "Return To Top"
19+
nav_to_top_weight: last
20+
---

content/en/homepage/about.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
---
2+
title: "What is libsemigroups?"
3+
header_menu_title: "About"
4+
navigation_menu_title: "About"
5+
weight: 1
6+
header_menu: true
7+
---
8+
9+
[libsemigroups][] is a C++17 library containing implementations of several
10+
algorithms for computing finite, and finitely presented, semigroups and
11+
monoids. The main algorithms implemented in [libsemigroups][] are:
12+
13+
- the **Froidure-Pin** algorithm for computing semigroups and monoids defined
14+
by a generating set consisting of elements whose multiplication and equality is
15+
decidable;
16+
- **Kambites'** algorithm for solving the word problem in small overlap monoids,
17+
and the algorithm for computing normal forms for small overlap monoids by the
18+
authors of [libsemigroups][];
19+
- the **Knuth-Bendix** algorithm for finitely presented semigroups and monoids;
20+
- a version of **Sims'** low index subgroup algorithm for computing congruences of a
21+
semigroup or monoid;
22+
- a generalized version of **Konieczny's** and **Lallement and Mcfadden's** algorithms;
23+
- **Radoszewski and Rytter's** algorithm from testing equality of words in free
24+
bands;
25+
- a non-random version of the **Schreier-Sims** algorithm;
26+
- a version of **Stephen's** procedure from
27+
for finitely presented inverse semigroups and monoids;
28+
- the **Todd-Coxeter** algorithm for finitely presented semigroups and monoids.
29+
30+
[libsemigroups]: https://libsemigroups.github.io/libsemigroups/

content/en/homepage/cpp.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
title: "C/C++"
3+
header_menu_title: "C/C++"
4+
navigation_menu_title: "C/C++"
5+
weight: 2
6+
header_menu: true
7+
---
8+
9+
[libsemigroups][] is a modern open source C++17 library designed to be:
10+
11+
- **state of the art**: the mathematical underpinnings of the algorithms
12+
in [libsemigroups][] use the current state of the art;
13+
- **extensible**: several of the implementations in [libsemigroups][] are generic
14+
and easily adaptable to user-defined types;
15+
- **adaptable**: the behaviour the algorithms implemented in [libsemigroups][]
16+
can be fine-tuned via many settings, and used interactively via the
17+
functions;
18+
- **easy to use**: converting between different types of [libsemigroups][]
19+
objects is easy; there are many helper functions to streamline common tasks;
20+
high quality exception messages are implemented throughout the code base
21+
(although you don't have to use these if you don't want to); long running
22+
algorithms can provide detailed feedback on their progress; many data
23+
structures can be visualised; and there are hundreds of examples.
24+
- **fast**: [libsemigroups][] is designed with performance in mind; several
25+
classes implement parallel algorithms; we provide some "winner takes all"
26+
mechanisms for running algorithms concurrently; and there are `_no_checks`
27+
versions of most functions if performance is critical.
28+
29+
[libsemigroups]: https://libsemigroups.github.io/libsemigroups/

content/en/homepage/gap.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: "GAP"
3+
header_menu_title: "GAP"
4+
navigation_menu_title: "GAP"
5+
weight: 3
6+
header_menu: true
7+
---
8+
9+
[libsemigroups][] is the workhorse of the [GAP][] package [Semigroups][]
10+
performing fundamental computations for finite and fintely presented semigroups
11+
and monoids. Many of these beat the corresponding methods in the [GAP][]
12+
library, despite [libsemigroups][] not having any optimisations specific to
13+
groups.
14+
15+
```julia
16+
F := FreeGroup(11);;
17+
R := [];;
18+
for i in [1 .. 11] do
19+
Add(R, [F.(i) ^ 2, One(F)]);
20+
od;
21+
for i in [1 .. 10] do
22+
Add(R, [F.(i) * F.(i + 1) * F.(i), F.(i + 1) * F.(i) * F.(i + 1)]);
23+
od;
24+
for i in [1 .. 9] do
25+
for j in [i + 2 .. 11] do
26+
Add(R, [F.(i) * F.(j), F.(j) * F.(i)]);
27+
od;
28+
od;
29+
G := F / R;
30+
Size(G); # runs forever
31+
```
32+
33+
But with the [Semigroups][] package loaded:
34+
35+
```julia
36+
F := FreeMonoid(11);;
37+
R := [];;
38+
for i in [1 .. 11] do
39+
Add(R, [F.(i) ^ 2, One(F)]);
40+
od;
41+
for i in [1 .. 10] do
42+
Add(R, [F.(i) * F.(i + 1) * F.(i), F.(i + 1) * F.(i) * F.(i + 1)]);
43+
od;
44+
for i in [1 .. 9] do
45+
for j in [i + 2 .. 11] do
46+
Add(R, [F.(i) * F.(j), F.(j) * F.(i)]);
47+
od;
48+
od;
49+
G := F / R;
50+
Size(G); # 479001600
51+
time; # 60
52+
```
53+
54+
[libsemigroups]: https://libsemigroups.github.io/libsemigroups/
55+
[GAP]: https://www.gap-system.org
56+
[Semigroups]: https://semigroups.github.io

0 commit comments

Comments
 (0)