Skip to content

Commit 921889e

Browse files
Redo using gh-action
1 parent 796941c commit 921889e

File tree

22 files changed

+474
-0
lines changed

22 files changed

+474
-0
lines changed

.github/workflows/hugo.yaml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: Build and deploy
2+
on:
3+
push:
4+
branches:
5+
- main
6+
workflow_dispatch:
7+
permissions:
8+
contents: read
9+
pages: write
10+
id-token: write
11+
concurrency:
12+
group: pages
13+
cancel-in-progress: false
14+
defaults:
15+
run:
16+
shell: bash
17+
jobs:
18+
build:
19+
runs-on: ubuntu-latest
20+
env:
21+
DART_SASS_VERSION: 1.97.2
22+
GO_VERSION: 1.25.5
23+
HUGO_VERSION: 0.154.4
24+
NODE_VERSION: 24.12.0
25+
TZ: Europe/Oslo
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v6
29+
with:
30+
submodules: recursive
31+
fetch-depth: 0
32+
- name: Setup Go
33+
uses: actions/setup-go@v6
34+
with:
35+
go-version: ${{ env.GO_VERSION }}
36+
cache: false
37+
- name: Setup Node.js
38+
uses: actions/setup-node@v6
39+
with:
40+
node-version: ${{ env.NODE_VERSION }}
41+
- name: Setup Pages
42+
id: pages
43+
uses: actions/configure-pages@v5
44+
- name: Create directory for user-specific executable files
45+
run: |
46+
mkdir -p "${HOME}/.local"
47+
- name: Install Dart Sass
48+
run: |
49+
curl -sLJO "https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz"
50+
tar -C "${HOME}/.local" -xf "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz"
51+
rm "dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz"
52+
echo "${HOME}/.local/dart-sass" >> "${GITHUB_PATH}"
53+
- name: Install Hugo
54+
run: |
55+
curl -sLJO "https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
56+
mkdir "${HOME}/.local/hugo"
57+
tar -C "${HOME}/.local/hugo" -xf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
58+
rm "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz"
59+
echo "${HOME}/.local/hugo" >> "${GITHUB_PATH}"
60+
- name: Verify installations
61+
run: |
62+
echo "Dart Sass: $(sass --version)"
63+
echo "Go: $(go version)"
64+
echo "Hugo: $(hugo version)"
65+
echo "Node.js: $(node --version)"
66+
- name: Install Node.js dependencies
67+
run: |
68+
[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true
69+
- name: Configure Git
70+
run: |
71+
git config core.quotepath false
72+
- name: Cache restore
73+
id: cache-restore
74+
uses: actions/cache/restore@v5
75+
with:
76+
path: ${{ runner.temp }}/hugo_cache
77+
key: hugo-${{ github.run_id }}
78+
restore-keys: hugo-
79+
- name: Build the site
80+
run: |
81+
hugo \
82+
--gc \
83+
--minify \
84+
--baseURL "${{ steps.pages.outputs.base_url }}/" \
85+
--cacheDir "${{ runner.temp }}/hugo_cache"
86+
- name: Cache save
87+
id: cache-save
88+
uses: actions/cache/save@v5
89+
with:
90+
path: ${{ runner.temp }}/hugo_cache
91+
key: ${{ steps.cache-restore.outputs.cache-primary-key }}
92+
- name: Upload artifact
93+
uses: actions/upload-pages-artifact@v4
94+
with:
95+
path: ./public
96+
deploy:
97+
environment:
98+
name: github-pages
99+
url: ${{ steps.deployment.outputs.page_url }}
100+
runs-on: ubuntu-latest
101+
needs: build
102+
steps:
103+
- name: Deploy to GitHub Pages
104+
id: deployment
105+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
public/
2+
resources/
3+
.DS_Store

.hugo_build.lock

Whitespace-only changes.

assets/favicon.ico

15 KB
Binary file not shown.

assets/images/favicon.png

495 Bytes
Loading
172 KB
Loading

content/en/_index.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
#
10+
# Headers are safeHTML, you can use HTML tags such as b,i,u,br
11+
header_headline: "libsemigroups"
12+
header_subheadline: "library for semigroups & monoids"
13+
14+
# Add a 'Go back to top' item to the navigation menu
15+
# Title: name of navigation menu entry
16+
# Weight (i. e. position in menu): none = no menu entry, first = add as first entry, last = ad as last entry
17+
nav_to_top_title: "Return To Top"
18+
nav_to_top_weight: last
19+
---

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)