diff --git a/notebooks/FinitePresentations.ipynb b/notebooks/FinitePresentations.ipynb new file mode 100644 index 0000000..616c414 --- /dev/null +++ b/notebooks/FinitePresentations.ipynb @@ -0,0 +1,551 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from libsemigroups_cppyy import FpSemigroup" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P = FpSemigroup()\n", + "# Add your alphabet\n", + "P.set_alphabet(\"ab\")\n", + "# Add your relations. Interpret add_rule(\"aaa\",\"a\") as a^3 = a\n", + "P.add_rule(\"aaa\", \"a\")\n", + "P.add_rule(\"bbbb\", \"b\")\n", + "P.add_rule(\"ba\", \"aab\")\n", + "P" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "S = P.froidure_pin()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "alphabet: ab\n" + ] + } + ], + "source": [ + "print(\"alphabet:\",P.alphabet())" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P.has_knuth_bendix()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "P.has_todd_coxeter()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'FroidurePinBase' object is not subscriptable", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mS\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: 'FroidurePinBase' object is not subscriptable" + ] + } + ], + "source": [ + "S[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "from libsemigroups_cppyy import KnuthBendix, right_cayley, left_cayley\n", + "import libsemigroups_cppyy.froidure_pin as fp\n", + "import networkx as nx\n", + "from pyvis.network import Network" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Make your KnuthBendix Class\n", + "P = KnuthBendix()\n", + "# Add your alphabet\n", + "P.set_alphabet(\"ab\")\n", + "# Add your relations. Interpret add_rule(\"aaa\",\"a\") as a^3 = a\n", + "P.add_rule(\"aaa\", \"a\")\n", + "P.add_rule(\"bbbb\", \"b\")\n", + "P.add_rule(\"ba\", \"aab\")\n", + "P" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "alphabet: ab\n", + "rules: [['aaa', 'a'], ['aab', 'ba'], ['bbbb', 'b']]\n" + ] + } + ], + "source": [ + "print(\"alphabet:\",P.alphabet())\n", + "print(\"rules:\", P.active_rules())" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "S = P.froidure_pin()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "7" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "S.left(2,3)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + " object at 0x7ff4b3a93030>" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "S.factorisation(7)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "import networkx\n", + "def left_cayley(S):\n", + " G=networkx.DiGraph()\n", + " for i in range(S.size()):\n", + " for j in range(S.nr_generators()):\n", + " G.add_edge(str(i),str(S.left(i,j)))\n", + " return G\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "G=left_cayley(S)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "networkx.draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NodeView(('0', '2', '4', '1', '3', '5', '7', '6', '8', '10', '9'))" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G.nodes()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "11" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "S.size()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "def right_cayley(S):\n", + " G=networkx.DiGraph()\n", + " for i in range(S.size()):\n", + " for j in range(S.nr_generators()):\n", + " G.add_edge(str(i),str(S.right(i,j)))\n", + " return G\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "G=right_cayley(S)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "networkx.draw(G)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NodeView(('0', '2', '3', '1', '4', '5', '6', '7', '8', '9', '10'))" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "G.nodes()" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 0 2\n", + "0 1 3\n", + "0 2 4\n", + "0 3 5\n", + "0 4 0\n", + "0 5 4\n", + "0 6 3\n", + "0 7 6\n", + "0 8 4\n", + "0 9 7\n", + "0 10 7\n", + "1 0 4\n", + "1 1 5\n", + "1 2 0\n", + "1 3 4\n", + "1 4 3\n", + "1 5 6\n", + "1 6 4\n", + "1 7 7\n", + "1 8 7\n", + "1 9 8\n", + "1 10 6\n", + "2 0 0\n", + "2 1 4\n", + "2 2 3\n", + "2 3 6\n", + "2 4 4\n", + "2 5 7\n", + "2 6 7\n", + "2 7 8\n", + "2 8 6\n", + "2 9 9\n", + "2 10 7\n", + "3 0 3\n", + "3 1 6\n", + "3 2 4\n", + "3 3 7\n", + "3 4 7\n", + "3 5 8\n", + "3 6 6\n", + "3 7 9\n", + "3 8 7\n", + "3 9 10\n", + "3 10 10\n", + "4 0 4\n", + "4 1 7\n", + "4 2 7\n", + "4 3 8\n", + "4 4 6\n", + "4 5 9\n", + "4 6 7\n", + "4 7 10\n", + "4 8 10\n", + "4 9 1\n", + "4 10 9\n", + "5 0 7\n", + "5 1 8\n", + "5 2 6\n", + "5 3 9\n", + "5 4 7\n", + "5 5 10\n", + "5 6 10\n", + "5 7 1\n", + "5 8 9\n", + "5 9 3\n", + "5 10 10\n", + "6 0 6\n", + "6 1 9\n", + "6 2 7\n", + "6 3 10\n", + "6 4 10\n", + "6 5 1\n", + "6 6 9\n", + "6 7 3\n", + "6 8 10\n", + "6 9 4\n", + "6 10 0\n", + "7 0 7\n", + "7 1 10\n", + "7 2 10\n", + "7 3 1\n", + "7 4 9\n", + "7 5 3\n", + "7 6 10\n", + "7 7 4\n", + "7 8 0\n", + "7 9 3386492780702182\n", + "7 10 140688962909032\n", + "8 0 10\n", + "8 1 1\n", + "8 2 9\n", + "8 3 3\n", + "8 4 10\n", + "8 5 4\n", + "8 6 0\n", + "8 7 3386492780702182\n", + "8 8 140688962909032\n", + "8 9 0\n", + "8 10 140688962909043\n", + "9 0 9\n", + "9 1 3\n", + "9 2 10\n", + "9 3 4\n", + "9 4 0\n", + "9 5 3386492780702182\n", + "9 6 140688962909032\n", + "9 7 0\n", + "9 8 140688962909043\n", + "9 9 140688954351008\n", + "9 10 140688963747056\n", + "10 0 10\n", + "10 1 4\n", + "10 2 0\n", + "10 3 3386492780702182\n", + "10 4 140688962909032\n", + "10 5 0\n", + "10 6 140688962909043\n", + "10 7 140688954351008\n", + "10 8 140688963747056\n", + "10 9 6442975286\n", + "10 10 140688962909056\n" + ] + } + ], + "source": [ + "for i in range(S.size()):\n", + " for j in range(S.size()):\n", + " print(i,j,S.right(i,j))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "WORK", + "language": "python", + "name": "work" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}