Changeset 3c4dcc in git for Singular/LIB/groups.lib


Ignore:
Timestamp:
May 6, 2005, 4:39:20 PM (19 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
Children:
0d217d3f1cc4c0449bdb078c65fd1f43cd1a2b84
Parents:
e6fb5315eb32da00236163ce10f9bdafaaa0bd47
Message:
*hannes: DOS->UNIX and white space cleanup


git-svn-id: file:///usr/local/Singular/svn/trunk@8073 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/groups.lib

    re6fb531 r3c4dcc  
    1 // $Id: groups.lib,v 1.2 2005-04-28 09:22:15 Singular Exp $
     1// $Id: groups.lib,v 1.3 2005-05-06 14:38:34 hannes Exp $
    22//(GP, last modified 26.10.01)
    33///////////////////////////////////////////////////////////////////////////////
    4 version="$Id: groups.lib,v 1.2 2005-04-28 09:22:15 Singular Exp $";
     4version="$Id: groups.lib,v 1.3 2005-05-06 14:38:34 hannes Exp $";
    55category="Applications";
    66info="
     
    1212
    1313   noSolution(I)         I an ideal in a polynomial ring over Z[x1..xn]
    14                          returns a list l of primes <=32003 such that 1 
     14                         returns a list l of primes <=32003 such that 1
    1515                         is in IZ/p[x1..xn] for p not in l or an ERROR
    1616                         if this is wrong or not decided.
     
    1919// ===================== A Problem in Finite Group Theory ===================
    2020// Posed by Boris Kunyavskii, Bar-Ilan University, Tel Aviv
    21 // 
    22 // For any word w in X,Y,X^(-1),Y^(-1) consider the sequence U_n 
     21//
     22// For any word w in X,Y,X^(-1),Y^(-1) consider the sequence U_n
    2323// of words (depending on w) inductively
    2424//           U_1 = w
     
    2929
    3030// Conjecture (1):
    31 // (by B. Plotkin, slightly modified): 
    32 // A finite group G is solvable <==> 
     31// (by B. Plotkin, slightly modified):
     32// A finite group G is solvable <==>
    3333// there is an n >= 1 such that U_n(x,y) = 1 for all x,y in G
    34 // and for any of the 4 following words 
     34// and for any of the 4 following words
    3535//         w1 = X^(-1)*Y*X*Y^(-1)*X
    3636//         w2 = X^(-2)*Y^(-1)*X
    37 //         w3 = Y^(-2)*X^(-1)*X 
     37//         w3 = Y^(-2)*X^(-1)*X
    3838//         w4 = X*Y^(-2)*X^(-1)*Y*X^(-1)
    3939//
     
    5555//
    5656// Conjecture (2):
    57 // Let G be one of the groups above, then, for at least one of the 4 words w 
     57// Let G be one of the groups above, then, for at least one of the 4 words w
    5858// above there are x,y in G such that 1 != U_n(x,y) = U_n+1(x,y) for some n.
    5959// (then U_n(x,y) != 1 for all n by definitionof U_n)
     
    8585
    8686static proc splitS1(ideal I,int s,list #)
    87 "USAGE: splitS1(I,s[,l]) I ideal, s integer, l list of ideals 
     87"USAGE: splitS1(I,s[,l]) I ideal, s integer, l list of ideals
    8888COMPUTE: Factorizes the generators of I. If for one generator f=f1*f2 and
    8989         fi=ni*gi^ri, ni an integer and gi a polynomial, then
     
    9191         done in < s seconds. Then apply splitS to I1 and I2 and continue
    9292         in the same way. The procedure stops if no generator can be
    93          factorized. 
     93         factorized.
    9494RETURN:  A list L of ideals and prime numbers
    9595         L[1]: A list of ideals such that the radical of the intersection
     
    9898               the ideals of L[1] which contain an ideal of l are canceled.
    9999         L[2]: A list of prime numbers appearing as factors of the ni.
    100 NOTE:   The computation avoids division by integers (by using 
     100NOTE:   The computation avoids division by integers (by using
    101101        option(contentSB)) hence the result is correct modulo any prime
    102102        number which does not appear in the list L[2].
     
    114114   poly p;
    115115   re=#;
    116      
     116
    117117   if(deg(I[1])==0){return(list(re+list(std(I)),qr));}
    118  
     118
    119119   fac=factorize(I[1]);
    120  
     120
    121121   while((size(fac[1])==2)&&(i<size(I)))
    122    { 
     122   {
    123123      I[i]=fac[1][2]*fac[1][1];   //not in splitS
    124       i++; 
     124      i++;
    125125      fac=factorize(I[i]);
    126126   }
     
    166166            }
    167167         }
    168       } 
    169       return(list(re,qr)); 
     168      }
     169      return(list(re,qr));
    170170   }
    171171   J=timeStd(I,s);       //J=std(I) in splitS
     
    194194///////////////////////////////////////////////////////////////////////////////
    195195static proc splitS(ideal I,int s,list #)
    196 "USAGE: splitS(I,s[,l]) I ideal, s integer, l list of ideals 
     196"USAGE: splitS(I,s[,l]) I ideal, s integer, l list of ideals
    197197COMPUTE: Factorizes the generators of I. If for one generator f=f1*f2 and
    198198         fi=ni*gi^ri, ni an integer and gi a polynomial, then
     
    200200         done in < s seconds. Then apply splitS to I1 and I2 and continue
    201201         in the same way. The procedure stops if no generator can be
    202          factorized. 
     202         factorized.
    203203RETURN:  A list L of ideals and prime numbers
    204204         L[1]: A list of ideals such that the radical of the intersection
     
    207207               the ideals of L[1] which contain an ideal of l are canceled.
    208208         L[2]: A list of prime numbers appearing as factors of the ni.
    209 NOTE:   The computation avoids division by integers (by using 
     209NOTE:   The computation avoids division by integers (by using
    210210        option(contentSB)) hence the result is correct modulo any prime
    211211        number which does not appear in the list L[2].
     
    223223   poly p;
    224224   re=#;
    225    
     225
    226226   if(deg(I[1])==0){return(list(re+list(std(I)),qr));}
    227  
     227
    228228   fac=factorize(I[1]);
    229  
     229
    230230   while((size(fac[1])==2)&&(i<size(I)))
    231    { 
    232       i++; 
     231   {
     232      i++;
    233233      fac=factorize(I[i]);
    234234   }
     
    273273            }
    274274         }
    275       } 
    276       return(list(re,qr)); 
     275      }
     276      return(list(re,qr));
    277277   }
    278278   J=std(I);
     
    301301///////////////////////////////////////////////////////////////////////////////
    302302static proc finalSplit(list I,list qr)
    303 "USAGE: finalSplit(I,qr) I list of ideals, qr list of primes 
    304 RETURN: list l of primes <=32003 such that 1 is in I[j]Z/p[x1..xn] 
    305         for p not in l and all j or an ERROR if this is wrong or 
    306         not decided. 
     303"USAGE: finalSplit(I,qr) I list of ideals, qr list of primes
     304RETURN: list l of primes <=32003 such that 1 is in I[j]Z/p[x1..xn]
     305        for p not in l and all j or an ERROR if this is wrong or
     306        not decided.
    307307EXAMPLE: example finalSplit; shows an example
    308308"
     
    360360               pr=splitS(J,5);
    361361               q=pr[1];
    362                qr=insResult(qr,pr[2]); 
     362               qr=insResult(qr,pr[2]);
    363363               size(q);"out";
    364364               for(j=1;j<=size(q);j++)
    365                { 
     365               {
    366366                  if(deg(q[j][1])==0)
    367367                  {
     
    380380                  }
    381381               }
    382  
     382
    383383            }
    384384            if((size(q)==1)&&(deg(q[1][1])>0))
     
    391391               if(size(pr[1])>1)
    392392               {
    393                   q=pr[1];             
     393                  q=pr[1];
    394394                  qr=insResult(qr,pr[2]);
    395395                  size(q);"out";
     
    411411                       qr=insResult(qr,pr[2]);
    412412                     }
    413                   } 
    414                } 
     413                  }
     414               }
    415415            }
    416416            if(size(q)>1)
     
    439439   for(i=1;i<=size(l);i++)
    440440   {
    441      
     441
    442442      if(deg(l[i][1])>0){l;ERROR("not ready");}
    443443      pr=primefactors(number(l[i][1]));
     
    459459proc noSolution(ideal I)
    460460"USAGE: noSolution(I) I ideal
    461 RETURN: list l of primes <=32003 such that 1 is in IZ/p[x1..xn] 
    462         for p not in l or an ERROR if this is wrong or not decided. 
     461RETURN: list l of primes <=32003 such that 1 is in IZ/p[x1..xn]
     462        for p not in l or an ERROR if this is wrong or not decided.
    463463EXAMPLE: example noSolution; shows an example
    464464"
     
    575575               pr=primefactors(n);
    576576               if(pr[3]!=1)
    577                { 
     577               {
    578578                  pr=contentS(J);
    579579                  qr=insResult(qr,pr[2]);
     
    655655               else
    656656               {
    657                  qr=insResult(qr,pr[1]); 
     657                 qr=insResult(qr,pr[1]);
    658658               }
    659659            }
     
    710710static proc trivialSplit(list p,int depth, list #)
    711711"USAGE: trivialSplit(p,s) p list of ideals, s integer the number of iterations
    712 COMPUTE: Factorizes the monomials among the generators of I. 
     712COMPUTE: Factorizes the monomials among the generators of I.
    713713         If  one monomial contains the variables x1,..xr, then
    714          I1=I(x1=0),...,Ir=I(xr=0) is considered. Then apply 
     714         I1=I(x1=0),...,Ir=I(xr=0) is considered. Then apply
    715715         trivialSplit to I1 ...Ir and continue in the same way s times.
    716716RETURN:  A list L of ideals and prime numbers
    717717         L[1]: A list of ideals such that the radical of the intersection
    718                of these ideals at x1=...=xr=0 coincides with the radical of 
     718               of these ideals at x1=...=xr=0 coincides with the radical of
    719719               I at x1=...=xr=0.
    720720         L[2]: A list of prime numbers appearing as factors of the monomials.
    721 NOTE:   The computation avoids division by integers  hence the result 
     721NOTE:   The computation avoids division by integers  hence the result
    722722        is correct modulo any prime
    723723        number which does not appear in the list L[2].
     
    729729   ideal J,K,T,Ke;
    730730   number n;
    731    
     731
    732732   if(size(p)==0){return(list(p,qr));}
    733733   if(depth<=0){return(list(p,qr));}
    734734   if(size(#)>0)
    735    { 
     735   {
    736736      T=#[1];
    737737   }
     
    749749      {
    750750         pr=splitS1(J,10);
    751          l=pr[1]; 
    752          qr=insResult(qr,pr[2]); 
     751         l=pr[1];
     752         qr=insResult(qr,pr[2]);
    753753         for(i=1;i<=size(l);i++)
    754754         {
     
    875875      for(j=1;j<=ncols(M);j++)
    876876      {
    877          if((deg(M[i,j])==0)&&(deg(I[i])==1))       
     877         if((deg(M[i,j])==0)&&(deg(I[i])==1))
    878878         {
    879879            ma[j]=(-1/M[i,j])*(I[i]-M[i,j]*var(j));
     
    933933   ring r = 0,x,dp;
    934934   squarefreeP(123456789100);
    935 } 
     935}
    936936
    937937///////////////////////////////////////////////////////////////////////////////
     
    939939static proc contentS(ideal I)
    940940"USAGE:  contentS(I);  I ideal
    941 RETURN:  list l 
     941RETURN:  list l
    942942         l[1] the ideal I. Te generators of I are the generators of the
    943943         input ideal devided by the part of the content which have
    944          prime factors less then 32003. 
     944         prime factors less then 32003.
    945945         l[2] contains the prime numbers which occured in the division
    946946EXAMPLE: example contentS; shows an example
     
    972972         }
    973973         I[i]=cleardenom(I[i]/m);
    974          re=insResult(re,pr[1]); 
    975       }
    976    }
    977    return(list(I,re)); 
     974         re=insResult(re,pr[1]);
     975      }
     976   }
     977   return(list(I,re));
    978978}
    979979example
     
    982982   ideal I=2x+2,3y+3x,1234567891x+1234567891;
    983983   contentS(I);
    984 } 
     984}
    985985
    986986///////////////////////////////////////////////////////////////////////////////
     
    996996      while((#[i]>r[j])&&(j<size(r))){j++;}
    997997      if(#[i]>r[j]){r=insert(r,#[i],j);}
    998       if(#[i]<r[j]){r=insert(r,#[i],j-1);}     
     998      if(#[i]<r[j]){r=insert(r,#[i],j-1);}
    999999   }
    10001000   return(r);
     
    10461046matrix iM = inverse(M);
    10471047matrix U2 = N*M*iN*iM;
    1048 ideal I = ideal(U1-U2);     
     1048ideal I = ideal(U1-U2);
    10491049
    10501050//list qr=primdecGTZ(I);
     
    10541054ideal I = imap(r,I);
    10551055ideal sI = groebner(I);
    1056 ideal hI = homog(sI,h); 
    1057 ideal shI =std(hI);   
    1058 ideal J = eliminate(shI,c);       //eliminate c 
     1056ideal hI = homog(sI,h);
     1057ideal shI =std(hI);
     1058ideal J = eliminate(shI,c);       //eliminate c
    10591059poly f = J[1];
    10601060
    10611061ring r1 = 0,(b,t,h),dp;
    1062 poly hf=b6t6-2b5t7+b4t8+b8t3h-4b7t4h+7b6t5h-6b5t6h+2b4t7h-7b6t4h2+12b5t5h2+b4t6h2-6b3t7h2-3b8th3+12b7t2h3-16b6t3h3+19b4t5h3-12b3t6h3-2b8h4+8b7th4-3b6t2h4+2b5t3h4-45b4t4h4+32b3t5h4+12b2t6h4-12b6th5+50b5t2h5-64b4t3h5+4b3t4h5+26b2t5h5-12b6h6+24b5th6+22b4t2h6+12b3t3h6-73b2t4h6-10bt5h6-8b5h7-6b4th7+88b3t2h7-68b2t3h7-26bt4h7-29b4h8+16b3th8+42b2t2h8+54bt3h8+3t4h8-28b3h9-12b2th9+88bt2h9+10t3h9-38b2h10-8bth10-11t2h10-28bh11-34th11-17h12;                                               
     1062poly hf=b6t6-2b5t7+b4t8+b8t3h-4b7t4h+7b6t5h-6b5t6h+2b4t7h-7b6t4h2+12b5t5h2+b4t6h2-6b3t7h2-3b8th3+12b7t2h3-16b6t3h3+19b4t5h3-12b3t6h3-2b8h4+8b7th4-3b6t2h4+2b5t3h4-45b4t4h4+32b3t5h4+12b2t6h4-12b6th5+50b5t2h5-64b4t3h5+4b3t4h5+26b2t5h5-12b6h6+24b5th6+22b4t2h6+12b3t3h6-73b2t4h6-10bt5h6-8b5h7-6b4th7+88b3t2h7-68b2t3h7-26bt4h7-29b4h8+16b3th8+42b2t2h8+54bt3h8+3t4h8-28b3h9-12b2th9+88bt2h9+10t3h9-38b2h10-8bth10-11t2h10-28bh11-34th11-17h12;
    10631063//poly hf=b3t4-b2t5+b4t2h-2b3t3h+2b2t4h-bt5h-2b3t2h2+4bt4h2+b2t2h3-bt3h3+t4h3
    10641064//+2b2th4-6bt2h4-4t3h4+b2h5-2bth5+2t2h5+4th6+h7;
    10651065
    10661066int n,m,sA,sB;
    1067  n=6; 
     1067 n=6;
    10681068//n=3;
    10691069//m=7-n;
    10701070
    10711071 m = 12-n;
    1072  ideal A = maxideal(n);       ideal B = maxideal(m);     
     1072 ideal A = maxideal(n);       ideal B = maxideal(m);
    10731073 sA =size(A);
    1074  sB = size(B);                                                               
    1075              
     1074 sB = size(B);
     1075
    10761076ring R = 0,(b(1..sB),a(1..sA),b,t,h),dp;
    10771077poly hf = imap(r1,hf);
     
    10851085matrix C = coef(g,bth);
    10861086ideal co = submat(C,2,1..ncols(C));//condition for decomposition, size 91
    1087  
     1087
    10881088ring R1 = 0,(b(1..sB),a(1..sA)),lp;
    1089 ideal co = imap(R,co);                       
     1089ideal co = imap(R,co);
    10901090co=subst(co,a(1),1);          //OE a1=1
    10911091co = subst(co,b(1),-17);      //co1[91]=b(1)+17
     
    10991099//n=1 0 sec
    11001100// keine Primzahl
    1101 //n=2   628 sec 
     1101//n=2   628 sec
    11021102// 2,3,5,7,11,13,17,19,23,29,31,37,43,47,61,89,293,347,367,487,491,3463,7498
    11031103//n=3  1604 sec
Note: See TracChangeset for help on using the changeset viewer.