Heltalen modulu n

Heltalen 0,1,..,n-1 bildar en grupp under räknesättet addition modulu n. Med det menas att man vid addition bortser från multipler av n och bara räknar med den resterande delen. Exempelvis vid modulu 12 så räknas additionen 5+9=14=12*1+2 bara som talet 2. På samma sätt räknas vid modulu 5 additionen 4+4 som 3 och 2+3 som 0. Att det här bildar grupp innebär att additionen fungerar bra, att det finns inverser till alla tal och att det finns ett neutralt element som vid addition inte gör någon skillnad, i det här fallet 0 (noll).

Under många århundranden har strukturer som är hämtade från heltalen studerats och man har upptäckt att de vanliga räknesätten addition och multiplikation för heltal förekommer i fler och fler andra sammanhang. Det här har gett upphov till en oerhört rik och vacker teori som man brukar kalla algebraiska strukturer eller abstrakt algebra. Abstrakt för att det är räknesätten som studeras men de studeras oberoende av vad som fungerar som tal. Exempelvis är det vanligt att räkna med symmetrier istället för heltal som när en regelbunden triangel ger upphov till gruppen S3 med de sex olika symmetrierna: rotation ett eller två steg, tre speglingar och identitetssymmetrin.

För en tid sedan bestämde jag mig att studera den här teorin igen, väldigt grundligt och utgå endast från de vanliga heltalen modulu n. Till min hjälp, för det är oerhört mycket räknande och skrivande, har jag ett datorprogram för algebra (cas - computer algebra system) som kallas Mathematica

Paketet är nyligen uppdelat i moduler för att källkoden skall vara mer 'maintainable'. Vet inte vad man säger på svenska men det är den professionelle programmerarens ledmotiv och dessa moduler bygger på varandra som en våningstårta upp och ner. De har funktionalitet som är minimal, grundläggande, huvudfunktionalitet, hanterar kvotgrupper och den femte undersöker korrespondenssatsen och de tre isomorfisatserna.

Här är en snabb demonstration som ger en vink om hur programmet är uppbyggt. Om du är intresserad så finns källkoden nu på GitHub. Paketen är skrivna utefter den teoribok jag läser och jag har inte alls fokuserat på effektivitet ännu, utan bara gjort första bästa lösning jag kommit att tänka på. Boken heter 'Abstrakt algebra' och är skriven av Per Anders Svensson.

Lite extra läsning