diff --git a/data/presentations_3_3_4.txt b/data/presentations_3_3_4.txt
index 80e9e09..019ae7b 100644
--- a/data/presentations_3_3_4.txt
+++ b/data/presentations_3_3_4.txt
@@ -1,123 +1,123 @@
// 14 14 40 0 4
-G_0 := Group;
-G_4 := Group;
+G_14_14_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c^-1 * b^-1 * c * b, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
+G_14_14_40_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c^-1 * b * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 14 14 48 0 1 4 5
-G_0 := Group;
-G_1 := Group;
-G_4 := Group;
-G_5 := Group;
+G_14_14_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c^-1 * b^-1 * c * b, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_14_14_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c^-1 * b^-1 * c * b, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
+G_14_14_48_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c^-1 * b * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_14_14_48_5 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c^-1 * b * c * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 14 14 54 0 4
-G_0 := Group;
-G_4 := Group;
+G_14_14_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c^-1 * b^-1 * c * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_14_54_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c^-1 * b * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 14 16 40 0
-G_0 := Group;
+G_14_16_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b^-1 * c^-1 * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 14 16 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_14_16_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_14_16_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b^-1 * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 14 16 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_14_16_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_16_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b^-1 * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 14 18 40 0
-G_0 := Group;
+G_14_18_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 14 18 48 0
-G_0 := Group;
+G_14_18_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 14 18 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_14_18_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_18_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 14 24 40 0
-G_0 := Group;
+G_14_24_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 14 24 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_14_24_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_14_24_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 14 24 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_14_24_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_24_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 14 26 40 0 4
-G_0 := Group;
-G_4 := Group;
+G_14_26_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
+G_14_26_40_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 14 26 48 0 1 4 5
-G_0 := Group;
-G_1 := Group;
-G_4 := Group;
-G_5 := Group;
+G_14_26_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_14_26_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
+G_14_26_48_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_14_26_48_5 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 14 26 54 0 2 4 6
-G_0 := Group;
-G_2 := Group;
-G_4 := Group;
-G_6 := Group;
+G_14_26_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_26_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_14_26_54_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_26_54_6 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 16 16 40 0
-G_0 := Group;
+G_16_16_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b^-1 * c^-1 * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 16 16 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_16_16_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_16_16_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b^-1 * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 16 16 54 0
-G_0 := Group;
+G_16_16_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 16 18 40 0
-G_0 := Group;
+G_16_18_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 16 18 48 0
-G_0 := Group;
+G_16_18_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 16 18 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_16_18_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_16_18_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 16 24 40 0
-G_0 := Group;
+G_16_24_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 16 24 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_16_24_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_16_24_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 16 24 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_16_24_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_16_24_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 16 26 40 0
-G_0 := Group;
+G_16_26_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 16 26 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_16_26_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_16_26_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 16 26 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_16_26_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_16_26_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 18 18 40 0
-G_0 := Group;
+G_18_18_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 18 18 48 0
-G_0 := Group;
+G_18_18_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 18 18 54 0
-G_0 := Group;
+G_18_18_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b^-1 * c * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 18 24 40 0
-G_0 := Group;
+G_18_24_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 18 24 48 0
-G_0 := Group;
+G_18_24_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 18 24 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_18_24_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_18_24_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 18 26 40 0
-G_0 := Group;
+G_18_26_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 18 26 48 0
-G_0 := Group;
+G_18_26_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 18 26 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_18_26_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_18_26_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 24 24 40 0
-G_0 := Group;
+G_24_24_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 24 24 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_24_24_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_24_24_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 24 24 54 0
-G_0 := Group;
+G_24_24_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 24 26 40 0
-G_0 := Group;
+G_24_26_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 24 26 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_24_26_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_24_26_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 24 26 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_24_26_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_24_26_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 26 26 40 0 4
-G_0 := Group;
-G_4 := Group;
+G_26_26_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
+G_26_26_40_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 26 26 48 0 1 4 5
-G_0 := Group;
-G_1 := Group;
-G_4 := Group;
-G_5 := Group;
+G_26_26_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_26_26_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
+G_26_26_48_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_26_26_48_5 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 26 26 54 0 4
-G_0 := Group;
-G_4 := Group;
+G_26_26_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c * b, c * b * c^-1 * b * c^-1 * b * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_26_26_54_4 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b^-1 * c * b^-1, c * b^-1 * c^-1 * b^-1 * c^-1 * b^-1 * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
diff --git a/data/presentations_3_4_4.txt b/data/presentations_3_4_4.txt
index 4eb85ea..d752673 100644
--- a/data/presentations_3_4_4.txt
+++ b/data/presentations_3_4_4.txt
@@ -1,84 +1,84 @@
// 14 40 40 0
-G_0 := Group;
+G_14_40_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 14 40 48 0
-G_0 := Group;
+G_14_40_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 14 40 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_14_40_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_40_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 14 48 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_14_48_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_14_48_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 14 48 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_14_48_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_48_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 14 54 54 0 2 8
-G_0 := Group;
-G_2 := Group;
-G_8 := Group;
+G_14_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_14_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_14_54_54_8 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b * a, b * c * b^-1 * c^-1 * b^-1 * c * b * c^-1, b * c * b^-1 * c * b * c * b^-1 * c * b * c * b^-1 * c, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 16 40 40 0
-G_0 := Group;
+G_16_40_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 16 40 48 0
-G_0 := Group;
+G_16_40_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 16 40 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_16_40_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_16_40_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 16 48 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_16_48_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_16_48_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 16 48 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_16_48_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_16_48_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 16 54 54 0 2 8
-G_0 := Group;
-G_2 := Group;
-G_8 := Group;
+G_16_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_16_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_16_54_54_8 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a^-1 * b^-1 * a^-1, b * c * b^-1 * c^-1 * b^-1 * c * b * c^-1, b * c * b^-1 * c * b * c * b^-1 * c * b * c * b^-1 * c, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 18 40 40 0
-G_0 := Group;
+G_18_40_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 18 40 48 0
-G_0 := Group;
+G_18_40_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 18 40 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_18_40_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_18_40_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 18 48 48 0
-G_0 := Group;
+G_18_48_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 18 48 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_18_48_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_18_48_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 18 54 54 0 2 8
-G_0 := Group;
-G_2 := Group;
-G_8 := Group;
+G_18_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_18_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_18_54_54_8 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a^-1 * b * a^-1 * b * a^-1, b * c * b^-1 * c^-1 * b^-1 * c * b * c^-1, b * c * b^-1 * c * b * c * b^-1 * c * b * c * b^-1 * c, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 24 40 40 0
-G_0 := Group;
+G_24_40_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 24 40 48 0
-G_0 := Group;
+G_24_40_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 24 40 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_24_40_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_24_40_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 24 48 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_24_48_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_24_48_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 24 48 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_24_48_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_24_48_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 24 54 54 0 2 8
-G_0 := Group;
-G_2 := Group;
-G_8 := Group;
+G_24_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_24_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_24_54_54_8 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a^-1 * b * a^-1, b * c * b^-1 * c^-1 * b^-1 * c * b * c^-1, b * c * b^-1 * c * b * c * b^-1 * c * b * c * b^-1 * c, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 26 40 40 0
-G_0 := Group;
+G_26_40_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 26 40 48 0
-G_0 := Group;
+G_26_40_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 26 40 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_26_40_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_26_40_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 26 48 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_26_48_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_26_48_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 26 48 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_26_48_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_26_48_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 26 54 54 0 2 8
-G_0 := Group;
-G_2 := Group;
-G_8 := Group;
+G_26_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_26_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_26_54_54_8 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b * a, b * a * b^-1 * a * b^-1 * a * b^-1 * a^-1, b * c * b^-1 * c^-1 * b^-1 * c * b * c^-1, b * c * b^-1 * c * b * c * b^-1 * c * b * c * b^-1 * c, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
diff --git a/data/presentations_4_4_4.txt b/data/presentations_4_4_4.txt
index df68da2..779a029 100644
--- a/data/presentations_4_4_4.txt
+++ b/data/presentations_4_4_4.txt
@@ -1,27 +1,27 @@
// 40 40 40 0
-G_0 := Group;
+G_40_40_40_0 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c^-1 * a * c * a * c^-1 * a * c, a^-1 * c^-1 * a * c^-1 * a^-1 * c^-1 * a * c^-1 >
// 40 40 48 0
-G_0 := Group;
+G_40_40_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 40 40 54 0
-G_0 := Group;
+G_40_40_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b^-1 * c * b * c * b^-1 * c * b, c^-1 * b^-1 * c * b^-1 * c^-1 * b^-1 * c * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 40 48 48 0
-G_0 := Group;
+G_40_48_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
// 40 48 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_40_48_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_40_48_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
// 40 54 54 0 2 8
-G_0 := Group;
-G_2 := Group;
-G_8 := Group;
+G_40_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_40_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_40_54_54_8 := Group< a, b, c | a^3, b^3, c^3, b * a^-1 * b * a * b * a^-1 * b * a, b^-1 * a^-1 * b * a^-1 * b^-1 * a^-1 * b * a^-1, b * c * b^-1 * c^-1 * b^-1 * c * b * c^-1, b * c * b^-1 * c * b * c * b^-1 * c * b * c * b^-1 * c, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 48 48 48 0 1
-G_0 := Group;
-G_1 := Group;
+G_48_48_48_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b^-1 * a^-1 * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a * c * a^-1 * c^-1 * a^-1 * c^-1 >
+G_48_48_48_1 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b^-1 * a^-1 * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c^-1 * a * c^-1 * a^-1 * c * a^-1 * c >
// 48 48 54 0
-G_0 := Group;
+G_48_48_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b^-1 * a^-1 * b^-1 * a^-1, c * b * c * b * c^-1 * b^-1 * c^-1 * b^-1, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 48 54 54 0 2 8
-G_0 := Group;
-G_2 := Group;
-G_8 := Group;
+G_48_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b^-1 * a^-1 * b^-1 * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_48_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b^-1 * a^-1 * b^-1 * a^-1, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
+G_48_54_54_8 := Group< a, b, c | a^3, b^3, c^3, b * a * b * a * b^-1 * a^-1 * b^-1 * a^-1, b * c * b^-1 * c^-1 * b^-1 * c * b * c^-1, b * c * b^-1 * c * b * c * b^-1 * c * b * c * b^-1 * c, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
// 54 54 54 0 2
-G_0 := Group;
-G_2 := Group;
+G_54_54_54_0 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b^-1 * a * b * a^-1, b * a * b^-1 * a * b * a * b^-1 * a * b * a * b^-1 * a, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, a * c * a^-1 * c^-1 * a^-1 * c * a * c^-1, a * c * a^-1 * c * a * c * a^-1 * c * a * c * a^-1 * c >
+G_54_54_54_2 := Group< a, b, c | a^3, b^3, c^3, b * a * b^-1 * a^-1 * b^-1 * a * b * a^-1, b * a * b^-1 * a * b * a * b^-1 * a * b * a * b^-1 * a, c * b * c^-1 * b^-1 * c^-1 * b * c * b^-1, c * b * c^-1 * b * c * b * c^-1 * b * c * b * c^-1 * b, c * a * c^-1 * a^-1 * c^-1 * a * c * a^-1, c * a * c^-1 * a * c * a * c^-1 * a * c * a * c^-1 * a >
diff --git a/src/groupparse.jl b/src/groupparse.jl
index 4f39a46..bb0c6c6 100644
--- a/src/groupparse.jl
+++ b/src/groupparse.jl
@@ -1,17 +1,39 @@
-function parse_magma_grouppresentation(str::AbstractString)
- m = match(r".*Group<(.*)\|(.*)>", str)
- gens_str = strip.(split(m.captures[1], ", "))
- rels_str = strip.(split(m.captures[2], ", "))
- return parse_magma_grouppresentation(gens_str, rels_str)
+comm(a,b) = inv(a)*inv(b)*a*b
+comm(a,b,args...) = comm(comm(a,b), args...)
+
+const MAGMA_PRESENTATION_regex = r"Group<\s?(?.*)\s?\|\s?(?.*)\s?>"
+const COMMUTATOR_regex = r"\((?[\w](\s?,\s?[\w]){1+})\)"
+iscomment(line) = startswith(line, "//")
+ismagma_presentation(line) = (m = match(MAGMA_PRESENTATION_regex, line); return !isnothing(m), m)
+
+function parse_magma_fpgroup(str::AbstractString)
+ m = match(MAGMA_PRESENTATION_regex, str)
+ gens_str = strip.(split(m[:gens], ","))
+ rels_str = m[:rels]
+ split_indices = [0]
+ in_function_call=0
+ for (i,s) in enumerate(rels_str)
+ if s == '('
+ in_function_call += 1
+ elseif s == ')'
+ @assert in_function_call > 0
+ in_function_call -= 1
+ elseif s == ',' && iszero(in_function_call)
+ push!(split_indices, i)
+ end
+ end
+ @assert in_function_call == 0
+ push!(split_indices, length(rels_str)+1)
+
+ rels_strs = [strip.(String(rels_str[s+1:e-1])) for (s,e) in zip(split_indices, Iterators.rest(split_indices, 2))]
+
+ # rels_strs = replace.(rels_strs, COMMUTATOR_regex=> s"comm(\g)")
+ # @show rels_strs
+
+ return parse_magma_fpgroup(gens_str, rels_strs)
end
-parse_magma_grouppresentation(gens_str::AbstractString, rels_str::AbstractString) =
- parse_magma_grouppresentation(
- strip.(split(gens_str, ", ")),
- strip.(split(rels_str, ", "))
- )
-
-function parse_magma_grouppresentation(gens_str::AbstractVector{<:AbstractString}, rels_str::AbstractVector{<:AbstractString})
+function parse_magma_fpgroup(gens_str::AbstractVector{<:AbstractString}, rels_str::AbstractVector{<:AbstractString})
rels_expr = Meta.parse.(rels_str)
expr = :([$(rels_expr...)])
@@ -25,25 +47,24 @@ function parse_magma_grouppresentation(gens_str::AbstractVector{<:AbstractString
end
function parse_grouppresentations(filename::AbstractString)
- groups_strs = readlines(filename)
+ lines = strip.(readlines(filename))
groups = Dict{String, FPGroup}()
-
- names_idcs = findall(x->startswith(x, "//"), groups_strs)
- push!(names_idcs, length(groups_strs)+1)
-
- for (first_idx, next_idx) in zip(names_idcs, Iterators.rest(names_idcs, 2))
-
- m = match(r"//\s?((\d{2}\s?){3}).*", groups_strs[first_idx])
- name = replace(strip(m.captures[1]), " "=>"_")
- for idx in first_idx+1:next_idx-1
- m = match(r"G((_\d\d){3})?_(\d+)\s:=\sGroup<(.*)\|(.*)>", groups_strs[idx])
- if isnothing(m)
- @warn "Can't parse presentation at line $idx:\n $(groups_strs[idx])"
- else
- group_name = "$(name)_$(m.captures[3])"
- G = parse_magma_grouppresentation(m.captures[4], m.captures[5])
- groups[group_name] = G
+ group_regex = r"(?\w.*)\s?:=\s?(?Group.*)"
+ for line in lines
+ isempty(line) && continue
+ iscomment(line) && continue
+ m = match(group_regex, line)
+ if isnothing(m)
+ @warn "Can't parse presentation line\n $line"
+ continue
+ else
+ name = strip(m[:name])
+ group_str = m[:group_str]
+ G = parse_magma_fpgroup(group_str)
+ if startswith(name, "G_")
+ name = name[3:end]
end
+ groups[name] = G
end
end
return groups