- Notifications
You must be signed in to change notification settings - Fork1
What C# can do for studying Finite Groups, quotient groups, semi-direct products, homomorphisms, automorphisms group, characters table, minimalistic rings and fields manipulations, polynomials factoring, fields extensions and many more...
License
aidevnn/FastGoat
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
What C# can do for studying Finite Groups, abelians or not, quotient groups, direct products or semi-direct products, homomorphisms, automorphisms group, with minimalistic manipulations for rings, fields, numbers, polynomials factoring, field extensions, algebraics numbers and many more...
Searching semi-direct product
GlobalStopWatch.Restart();vars7=newSn(7);vara=s7[(1,2,3,4,5,6,7)];varallC3=s7.Where(p=>(p^3)==s7.Neutral()).ToArray();varb=allC3.First(p=>Group.GenerateElements(s7,a,p).Count()==21);GlobalStopWatch.Stop();Console.WriteLine("|S7|={0}, |{{b in S7 with b^3 = 1}}| = {1}",s7.Count(),allC3.Count());Console.WriteLine("First Solution |HK| = 21 : h = {0} and k = {1}",a,b);Console.WriteLine();varh=Group.Generate("H",s7,a);varg21=Group.Generate("G21",s7,a,b);DisplayGroup.Head(g21);DisplayGroup.Head(g21.Over(h));GlobalStopWatch.Show("Group21");
will output
|S7|=5040, |{b in S7 with b^3 = 1}| = 351First Solution |HK| = 21 : h = [(1 2 3 4 5 6 7)] and k = [(2 3 5)(4 7 6)]|G21| = 21Type NonAbelianGroupBaseGroup S7|G21/H| = 3Type AbelianGroupBaseGroup G21/HGroup |G21| = 21NormalSubGroup |H| = 7# Group21 Time:113 ms
Comparing the previous results with the group presented by
GlobalStopWatch.Restart();varwg=newWordGroup("a7, b3, a2 = bab-1");GlobalStopWatch.Stop();DisplayGroup.Head(wg);varn=Group.Generate("<a>",wg,wg["a"]);DisplayGroup.Head(wg.Over(n));GlobalStopWatch.Show($"{wg}");Console.WriteLine();
will produce
|WG[a,b]| = 21Type NonAbelianGroupBaseGroup WG[a,b]|WG[a,b]/<a>| = 3Type AbelianGroupBaseGroup WG[a,b]/<a>Group |WG[a,b]| = 21NormalSubGroup |<a>| = 7# WG[a,b] Time:42 ms
Another way for the previous example
GlobalStopWatch.Restart();varc7=newCn(7);varc3=newCn(3);varg21=Group.SemiDirectProd(c7,c3);GlobalStopWatch.Stop();varn=Group.Generate("N",g21,g21[1,0]);DisplayGroup.HeadSdp(g21);DisplayGroup.Head(g21.Over(n));GlobalStopWatch.Show("Group21");
will output
|C7 x: C3| = 21Type NonAbelianGroupBaseGroup C7 x C3NormalGroup |C7| = 7ActionGroup |C3| = 3Action FaithFullg=0 y(g) = (0->0, 1->1, 2->2, 3->3, 4->4, 5->5, 6->6)g=1 y(g) = (0->0, 1->2, 2->4, 3->6, 4->1, 5->3, 6->5)g=2 y(g) = (0->0, 1->4, 2->1, 3->5, 4->2, 5->6, 6->3)|(C7 x: C3)/N| = 3Type AbelianGroupBaseGroup (C7 x: C3)/NGroup |C7 x: C3| = 21NormalSubGroup |N| = 7# Group21 Time:1 ms
Expressing the group
vargl27=FG.GL2p(7);varg21mat=Group.IsomorphicSubgroup(gl27,g21);DisplayGroup.HeadGenerators(g21mat);
will output
|C7 x: C3| = 21Type NonAbelianGroupBaseGroup GL(2,7)SuperGroup |GL(2,7)| = 2016Generators of C7 x: C3gen1 of order 3[2, 0][0, 1]gen2 of order 7[1, 1][0, 1]
Displaying characters table for the group
FG.CharacterTable(g21).DisplayCells();
will output
|C7 x: C3| = 21Type NonAbelianGroupBaseGroup C7 x C3[Class 1 3a 3b 7a 7b][ Size 1 7 7 3 3][ ][ Ꭓ.1 1 1 1 1 1][ Ꭓ.2 1 ξ3 ξ3² 1 1][ Ꭓ.3 1 ξ3² ξ3 1 1][ Ꭓ.4 3 0 0 -1/2 - 1/2·I√7 -1/2 + 1/2·I√7][ Ꭓ.5 3 0 0 -1/2 + 1/2·I√7 -1/2 - 1/2·I√7]All i, Sum[g](Xi(g)Xi(g^−1)) = |G| : TrueAll i <> j, Sum[g](Xi(g)Xj(g^−1)) = 0 : TrueAll g, h in Cl(g), Sum[r](Xr(g)Xr(h^−1)) = |Cl(g)| : TrueAll g, h not in Cl(g), Sum[r](Xr(g)Xr(h^−1)) = 0 : True
Computing Galois Group of irreductible polynomial
Ring.DisplayPolynomial=MonomDisplay.StarCaret;varx=FG.QPoly('X');varP=x.Pow(7)-8*x.Pow(5)-2*x.Pow(4)+16*x.Pow(3)+6*x.Pow(2)-6*x-2;// GroupNames websiteGaloisApplicationsPart2.GaloisGroupChebotarev(P,details:true);
will output
f = X^7 - 8*X^5 - 2*X^4 + 16*X^3 + 6*X^2 - 6*X - 2Disc(f) = 1817487424 ~ 2^6 * 73^4#1 P = 3 shape (7)#2 P = 5 shape (1, 3, 3)#3 P = 7 shape (7)#4 P = 11 shape (1, 3, 3)#5 P = 13 shape (1, 3, 3)#6 P = 17 shape (7)#7 P = 19 shape (1, 3, 3)#8 P = 23 shape (1, 3, 3)#9 P = 29 shape (1, 3, 3)#10 P = 31 shape (1, 3, 3)actual types [(7), 3] [(1, 3, 3), 7]expected types [(7), 6] [(1, 3, 3), 14] [(1, 1, 1, 1, 1, 1, 1), 1]Distances { Name = F_21(7) = 7:3, order = 21, dist = 0.6666666666666664 } { Name = F_42(7) = 7:6, order = 42, dist = 8.8 } { Name = L(7) = L(3,2), order = 168, dist = 25.6 } { Name = A7, order = 2520, dist = 380 } { Name = S7, order = 5040, dist = 538.6666666666666 }P = X^7 - 8*X^5 - 2*X^4 + 16*X^3 + 6*X^2 - 6*X - 2Gal(P) = F_21(7) = 7:3|F_21(7) = 7:3| = 21Type NonAbelianGroupBaseGroup S7SuperGroup |Symm7| = 5040
DisplayGroup.HeadElementsCayleyGraph(g21,gens:[g21["a"],g21["b-1"]]);
will output
Galois Group of polynomial
Ring.DisplayPolynomial=MonomDisplay.StarCaret;varx=FG.QPoly('X');varP=x.Pow(5)+x.Pow(4)-4*x.Pow(3)-3*x.Pow(2)+3*x+1;varroots=IntFactorisation.AlgebraicRoots(P,details:true);vargal=GaloisTheory.GaloisGroup(roots,details:true);DisplayGroup.AreIsomorphics(gal,FG.Abelian(5));
will output
[...]f = X^5 + X^4 - 4*X^3 - 3*X^2 + 3*X + 1 with f(y) = 0Square free norm : Norm(f(X + 2*y)) = x^25 - 5*x^24 - 98*x^23 + 503*x^22 + 3916*x^21 - 20988*x^20 - 82808*x^19 + 476245*x^18 + 1001759*x^17 - 6482223*x^16 - 6888926*x^15 + 55077950*x^14 + 23535811*x^13 - 295014199*x^12 - 8852570*x^11 + 984611573*x^10 - 207998384*x^9 - 1981105500*x^8 + 676565912*x^7 + 2253157335*x^6 - 871099834*x^5 - 1278826318*x^4 + 467945878*x^3 + 268636799*x^2 - 89574789*x + 1746623 = (x^5 - x^4 - 26*x^3 + 47*x^2 + 47*x - 1) * (x^5 - x^4 - 26*x^3 + 25*x^2 + 91*x - 67) * (x^5 - x^4 - 26*x^3 + 25*x^2 + 157*x - 199) * (x^5 - x^4 - 26*x^3 - 19*x^2 + 113*x + 131) * (x^5 - x^4 - 4*x^3 + 3*x^2 + 3*x - 1)X^5 + X^4 - 4*X^3 - 3*X^2 + 3*X + 1 = (X + y^4 + y^3 - 3*y^2 - 2*y + 1) * (X - y^4 + 4*y^2 - 2) * (X - y^3 + 3*y) * (X - y^2 + 2) * (X - y)Are equals TruePolynomial P = X^5 + X^4 - 4*X^3 - 3*X^2 + 3*X + 1Factorization in Q(α)[X] with P(α) = 0 X - α X - α^2 + 2 X - α^3 + 3*α X + α^4 + α^3 - 3*α^2 - 2*α + 1 X - α^4 + 4*α^2 - 2|Gal( Q(α)/Q )| = 5Type AbelianGroupBaseGroup S5Elements(1)[1] = [](2)[5] = [(1 2 5 3 4)](3)[5] = [(1 3 2 4 5)](4)[5] = [(1 4 3 5 2)](5)[5] = [(1 5 4 2 3)]Gal( Q(α)/Q ) IsIsomorphicTo C5 : True
Computing
Ring.DisplayPolynomial=MonomDisplay.Caret;varx=FG.QPoly('X');var(X, _)=FG.EPolyXc(x.Pow(2)-2,'a');var(minPoly,a0,b0)=IntFactorisation.PrimitiveElt(X.Pow(2)-3);varroots=IntFactorisation.AlgebraicRoots(minPoly);Console.WriteLine("Q(√2, √3) = Q(α)");vargal=GaloisTheory.GaloisGroup(roots,details:true);DisplayGroup.AreIsomorphics(gal,FG.Abelian(2,2));
will output
Q(√2, √3) = Q(α)Polynomial P = X^4 - 10*X^2 + 1Factorization in Q(α)[X] with P(α) = 0 X + α X - α X + α^3 - 10*α X - α^3 + 10*α|Gal( Q(α)/Q )| = 4Type AbelianGroupBaseGroup S4Elements(1)[1] = [](2)[2] = [(1 2)(3 4)](3)[2] = [(1 3)(2 4)](4)[2] = [(1 4)(2 3)]Gal( Q(α)/Q ) IsIsomorphicTo C2 x C2 : True
With
Ring.DisplayPolynomial=MonomDisplay.Caret;varx=FG.QPoly('X');var(X,i)=FG.EPolyXc(x.Pow(2)+1,'i');var(minPoly, _, _)=IntFactorisation.PrimitiveElt(X.Pow(4)-2);varroots=IntFactorisation.AlgebraicRoots(minPoly);Console.WriteLine("With α^4-2 = 0, Q(α, i) = Q(β)");vargal=GaloisTheory.GaloisGroup(roots,primEltChar:'β',details:true);DisplayGroup.AreIsomorphics(gal,FG.Dihedral(4));
will output
With α^4-2 = 0, Q(α, i) = Q(β)Polynomial P = X^8 + 4*X^6 + 2*X^4 + 28*X^2 + 1Factorization in Q(β)[X] with P(β) = 0 X + β X - β X + 5/12*β^7 + 19/12*β^5 + 5/12*β^3 + 139/12*β X + 5/24*β^7 - 1/24*β^6 + 19/24*β^5 - 5/24*β^4 + 5/24*β^3 - 13/24*β^2 + 127/24*β - 29/24 X + 5/24*β^7 + 1/24*β^6 + 19/24*β^5 + 5/24*β^4 + 5/24*β^3 + 13/24*β^2 + 127/24*β + 29/24 X - 5/24*β^7 - 1/24*β^6 - 19/24*β^5 - 5/24*β^4 - 5/24*β^3 - 13/24*β^2 - 127/24*β - 29/24 X - 5/24*β^7 + 1/24*β^6 - 19/24*β^5 + 5/24*β^4 - 5/24*β^3 + 13/24*β^2 - 127/24*β + 29/24 X - 5/12*β^7 - 19/12*β^5 - 5/12*β^3 - 139/12*β|Gal( Q(β)/Q )| = 8Type NonAbelianGroupBaseGroup S8Elements(1)[1] = [](2)[2] = [(1 2)(3 8)(4 7)(5 6)](3)[2] = [(1 3)(2 8)(4 6)(5 7)](4)[2] = [(1 4)(2 6)(3 7)(5 8)](5)[2] = [(1 5)(2 7)(3 6)(4 8)](6)[2] = [(1 8)(2 3)(4 5)(6 7)](7)[4] = [(1 6 8 7)(2 4 3 5)](8)[4] = [(1 7 8 6)(2 5 3 4)]Gal( Q(β)/Q ) IsIsomorphicTo D8 : True
ALGÈBRE T1Daniel Guin, Thomas Hausberger.ALGÈBRE T1 Groupes, corps et théorie de Galois.EDP Sciences.All Chapters.
Algebra (3rd ed.)Saunders MacLane, Garrett Birkhoff.Algebra (3rd ed.).American Mathematical Society.Chapter XII.2 Groups extensions.
A Course on Finite GroupsH.E. Rose.A Course on Finite Groups.Springer. 2009.All Chapters. Web Sections, Web Chapters.
A Course on Finite GroupsH.E. Rose.A Course on Finite Groups.Web Sections, Web Chapters and Solution Appendix.Springer. 2009.Chapter 13. Representation and Character Theory.
GroupNamesTim Dokchitser.Group Names.Beta
GAP2022The GAP Group.GAP -- Groups, Algorithms, and Programming.Version 4.12.0; 2022.
Paper (pdf)Ken Brown.Mathematics 7350.Cornell University.The Todd–Coxeter procedure
Conway polynomialsFrank Lübeck.Conway polynomials for finite fieldsOnline data
AECFAlin Bostan, Frédéric Chyzak, Marc Giusti, Romain Lebreton, Grégoire Lecerf, Bruno Salvy, Éric Schost.Algorithmes Efficaces en Calcul Formel.Édition web 1.1, 2018Chapitre IV Factorisation des polynômes.
hal-01444183Xavier CarusoComputations with p-adic numbers. Journées Nationales de Calcul Formel, In press,Les cours du CIRM. 2017.Several implementations of p-adic numbers
Algebraic FactoringBarry TragerAlgebraic Factoring and Rational Function Integration.Laboratory for Computer Science, MIT. 1976.Norms and Algebraic Factoring
Bases de GröbnerJean-Charles FaugereRésolution des systèmes polynômiaux en utilisant les bases de Gröbner.INRIA (POLSYS) / UPMC / CNRS/ LIP6.(JNCF) 2015
Ideals, Varieties, and AlgorithmsDavid A. Cox, John Little, Donal O’SheaIdeals, Varieties, and Algorithms.Springer. 4th Edition. 2015.Chapter 5. Polynomial and Rational Functions on a Variety
CharaktertheorieJun.-Prof. Dr. Caroline LassueurCharacter Theory of Finite Groups.TU Kaiserslautern, SS2020.Chapter 6. Induction and Restriction of Characters
WikipediaWikipedia.The Free Encyclopedia.Many algorithms and proofs
WolframCloudWolfram Research.WOLFRAM CLOUD Integrated Access to Computational Intelligence2023 Wolfram Research, Inc.
Pari/GPThe PARI Group.PARI/GP Number Theory-oriented Computer Algebra System.Bordeaux.Version 2.15.x; 2020-2022.
milneFTMilne, James S.Fields and Galois Theory.Ed web v5.10, 2022.Chapter 4. Computing Galois Groups.
ChatGPTOpenAI.ChatGPTAugust 3, 2023Version3.5Free Research Preview.
fplllThe FPLLL development team.A lattice reduction librarymay2021Version 5.4.1
arbF.JohanssonArb a C library for arbitrary-precision ball arithmeticjune2022Version 2.23
milneCFTMilne, James S.Class Field Theory.Ed web v4.03, 2020.Chapter 2. The Cohomology of Groups.
Cohomology of Finite GroupsAlejandro Adem, R. James Milgram.Cohomology of Finite Groups Springer.Second Edition 2004.Chapter 1. Group Extensions, Simple Algebras and Cohomology
arXiv:math/0010134Florentin Smarandache, PhD Associate Professor Chair of Department of Math & SciencesINTEGER ALGORITHMS TO SOLVE DIOPHANTINE LINEAR EQUATIONS AND SYSTEMS.University of New Mexico nov 2007.
RSW1999Iain Raeburn, Aidan Sims, and Dana P.WilliamsTWISTED ACTIONS AND OBSTRUCTIONS IN GROUP COHOMOLOGY.Germany, March 8–12, 1999.
A000001OEIS.The On-Line Encyclopedia of Integer Sequences.A000001 Number of groups of order n.
relatorsJohn J. CANNON.Construction of defining relators for finite groups.Department of Pure Mathematics, University of Sydney.Discrete Mathematics 5 (1973), North-Holland Publishing Company.Construction of defining relators for finite groups. p105-129
generatorsGLnqD.E.Taylor.Pairs of Generators for Matrix Groups.Department of Pure MathematicsThe University of SydneyAustralia 2006.arXiv:2201.09155v1
Groups and Symmetries From Finite Groups to Lie GroupsYvette Kosmann-Schwarzbach, Stephanie Frank SingerGroups and Symmetries From Finite Groups to Lie Groups.Springer. 2th Edition. 2022.Chapter 2. Representations of Finite Groups
Algorithms in Invariant TheoryBernd Sturmfels.Algorithms in Invariant TheorySecond edition.2008 Springer-Verlag/Wien.Chapter2 Invariant theory of finite groups.
ntbv2Victor Shoup.A Computational Introduction to Number Theory and Algebra.Second edition.December 2008 Cambridge University Press.New York UniversityChapter20 Algorithms for finite fields.
pslqm2David H. Bailey.The two-level multipair PSLQ algorithm.May 2, 2024PSLQM2.
SymPyMeurer A, Smith CP, Paprocki M, Čertík O, Kirpichev SB, Rocklin M, Kumar A,Ivanov S, Moore JK, Singh S, Rathnayake T, Vig S, Granger BE, Muller RP,Bonazzi F, Gupta H, Vats S, Johansson F, Pedregosa F,Curry MJ, Terrel AR,Roučka Š, Saboo A, Fernando I, Kulal S, Cimrman R, Scopatz A.(2017) SymPy:symbolic computing in Python.PeerJ Computer Science 3:e103Version 1.12; 2023.
LMFDBThe LMFDB Collaboration.The L-functions and modular forms database.2024.
Reg05Oded Regev.On Lattices, Learning with Errors, Random Linear Codes, and Cryptography.May 22, 2005LWE.
BGV11Zvika Brakerski, Craig Gentry, and Vinod Vaikuntanathan.Fully Homomorphic Encryption without Bootstrapping.2011BGV.
KDE+21Andrey Kim, Maxim Deryabin, Jieun Eom, Rakyong Choi, Yongwoo Lee, Whan Ghang, and Donghoon Yoo.General Bootstrapping Approach for RLWE-based Homomorphic Encryption.September 27, 2021, Suwon.Republic of KoreaSamsung Advanced Institute of TechnologyKDE+21.
SageMathThe Sage Developers.SageMath, the Sage Mathematics Software System.Version 10.4, 2024.
GHS12Craig Gentry, Shai Halevi, Nigel P. Smart.Homomorphic Evaluation of the AES Circuit.January 3, 2015GHS12.
About
What C# can do for studying Finite Groups, quotient groups, semi-direct products, homomorphisms, automorphisms group, characters table, minimalistic rings and fields manipulations, polynomials factoring, fields extensions and many more...