Changeset e17927 in git


Ignore:
Timestamp:
Oct 31, 2008, 4:32:45 PM (16 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'b4f17ed1d25f93d46dbe29e4b499baecc2fd51bb')
Children:
ae61244678c3fb06cf465e22e3f6fa5315b9b6f5
Parents:
486043b7198dd43aadbe6a8b1f1d6fec45bbdfa6
Message:
*hannes: output opt.


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/finvar.lib

    r486043 re17927  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: finvar.lib,v 1.77 2008-10-06 17:04:27 Singular Exp $"
     2version="$Id: finvar.lib,v 1.78 2008-10-31 15:32:45 Singular Exp $"
    33category="Invariant theory";
    44info="
     
    281281        REY=concat(REY,P(k)*vars);     // adding new mapping to REY
    282282        if (v)
    283         { "  Group element "+string(g)+" has been found.";
     283        { "  Group element ",g," has been found.";
    284284        }
    285285      }
     
    292292  if (v)
    293293  { if (g<=i)
    294     { "  There are only "+string(g)+" group elements.";
     294    { "  There are only ",g," group elements.";
    295295    }
    296296    "";
     
    573573      }
    574574      if (v)
    575       { "  Term "+string(j)+" of the Molien series has been computed.";
     575      { "  Term ",j," of the Molien series has been computed.";
    576576      }
    577577    }
     
    726726        setring bre;
    727727        if (v)
    728         { "  Term "+string(i)+" of the Molien series has been computed.";
     728        { "  Term ",i," of the Molien series has been computed.";
    729729        }
    730730      }
     
    843843      }
    844844      if (v)
    845       { "  Term "+string(i)+" of the Molien series has been computed.";
     845      { "  Term ",i," of the Molien series has been computed.";
    846846      }
    847847    }
     
    11391139          }
    11401140          if (v)
    1141           { "  Group element "+string(g)+" has been found.";
     1141          { "  Group element ",g," has been found.";
    11421142          }
    11431143        }
     
    11501150    if (v)
    11511151    { if (g<=i)
    1152       { "  There are only "+string(g)+" group elements.";
     1152      { "  There are only ",g," group elements.";
    11531153      }
    11541154      "";
     
    13611361          }
    13621362          if (v)
    1363           { "  Group element "+string(g)+" has been found.";
     1363          { "  Group element ",g," has been found.";
    13641364          }
    13651365          setring br;
     
    13731373    if (v)
    13741374    { if (g<=i)
    1375       { "  There are only "+string(g)+" group elements.";
     1375      { "  There are only ",g," group elements.";
    13761376      }
    13771377      "";
     
    21662166                                       // inviarants of degree d
    21672167    if (v)
    2168     { "  Computing primary invariants in degree "+string(d)+":";
     2168    { "  Computing primary invariants in degree ",d,":";
    21692169    }
    21702170    B=invariant_basis_reynolds(REY,d,intvec(cd,6)); // basis of invariants of
     
    23152315    setring br;
    23162316    if (v)
    2317     { "  Computing primary invariants in degree "+string(d)+":";
     2317    { "  Computing primary invariants in degree ",d,":";
    23182318    }
    23192319    B=invariant_basis_reynolds(REY,d,intvec(cd,6)); // basis of invariants of
     
    24542454    d++;                               // degree where we'll search
    24552455    if (v)
    2456     { "  Computing primary invariants in degree "+string(d)+":";
     2456    { "  Computing primary invariants in degree ",d,":";
    24572457    }
    24582458    B=invariant_basis_reynolds(REY,d,intvec(-1,6)); // basis of invariants of
     
    25952595    d++;                               // degree where we'll search
    25962596    if (v)
    2597     { "  Computing primary invariants in degree "+string(d)+":";
     2597    { "  Computing primary invariants in degree ",d,":";
    25982598    }
    25992599    B=invariant_basis_reynolds(REY,d,intvec(-1,6)); // basis of invariants of
     
    27422742    d++;                               // degree where we'll search
    27432743    if (v)
    2744     { "  Computing primary invariants in degree "+string(d)+":";
     2744    { "  Computing primary invariants in degree ",d,":";
    27452745    }
    27462746    B=invariant_basis(d,#[1..gen_num]); // basis of invariants of degree d
     
    30363036    }
    30373037    else
    3038     { "HELP:    The "+string(dif)+" random combination(s) of the "+string(cd)+" basis elements with";
    3039       "         coefficients in the range from -"+string(max)+" to "+string(max)+" did not lower the";
    3040       "         dimension by "+string(dif)+". You can abort, try again or give a new range:";
     3038    { "HELP:    The ",dif," random combination(s) of the ",cd," basis elements with";
     3039      "         coefficients in the range from -",max," to ",max," did not lower the";
     3040      "         dimension by ",dif,". You can abort, try again or give a new range:";
    30413041      answer="";
    30423042      while (answer<>"n
     
    30623062      { flag=1;
    30633063        while (flag)
    3064         { "         Give a new <int> > "+string(max)+" that bounds the range of coefficients:";
     3064        { "         Give a new <int> > ",max," that bounds the range of coefficients:";
    30653065          answer=read("");
    30663066          for (j=1;j<=size(answer)-1;j++)
     
    31323132    }
    31333133    else
    3134     { "HELP:    The "+string(dif)+" random combination(s) of the "+string(cd)+" basis elements with";
    3135       "         coefficients in the range from -"+string(max)+" to "+string(max)+" did not lower the";
    3136       "         dimension by "+string(dif)+". You can abort, try again, lower the number of";
     3134    { "HELP:    The ",dif," random combination(s) of the ",cd," basis elements with";
     3135      "         coefficients in the range from -",max," to ",max," did not lower the";
     3136      "         dimension by ",dif,". You can abort, try again, lower the number of";
    31373137      "         combinations searched for by 1 or give a larger coefficient range:";
    31383138      answer="";
     
    31713171        { flag=1;
    31723172          while (flag)
    3173           { "         Give a new <int> > "+string(max)+" that bounds the range of coefficients:";
     3173          { "         Give a new <int> > ",max," that bounds the range of coefficients:";
    31743174            answer=read("");
    31753175            for (j=1;j<=size(answer)-1;j++)
     
    33013301                                       // inviarants of degree d
    33023302    if (v)
    3303     { "  Computing primary invariants in degree "+string(d)+":";
     3303    { "  Computing primary invariants in degree ",d,":";
    33043304    }
    33053305    B=invariant_basis_reynolds(REY,d,intvec(cd,6)); // basis of invariants of
     
    33273327      if (ncols(P)==i)
    33283328      { "WARNING: The return value is not a set of primary invariants, but";
    3329         "         polynomials qualifying as the first "+string(i)+" primary invariants.";
     3329        "         polynomials qualifying as the first ",i," primary invariants.";
    33303330        return(matrix(P));
    33313331      }
     
    34543454    setring br;
    34553455    if (v)
    3456     { "  Computing primary invariants in degree "+string(d)+":";
     3456    { "  Computing primary invariants in degree ",d,":";
    34573457    }
    34583458    B=invariant_basis_reynolds(REY,d,intvec(cd,6)); // basis of invariants of
     
    34803480      if (ncols(P)==n+1)
    34813481      { "WARNING: The first return value is not a set of primary invariants,";
    3482         "         but polynomials qualifying as the first "+string(i)+" primary invariants.";
     3482        "         but polynomials qualifying as the first ",i," primary invariants.";
    34833483        return(matrix(P));
    34843484      }
     
    35923592    d++;                               // degree where we'll search
    35933593    if (v)
    3594     { "  Computing primary invariants in degree "+string(d)+":";
     3594    { "  Computing primary invariants in degree ",d,":";
    35953595    }
    35963596    B=invariant_basis_reynolds(REY,d,intvec(-1,6)); // basis of invariants of
     
    36203620      if (ncols(P)==i)
    36213621      { "WARNING: The first return value is not a set of primary invariants,";
    3622         "         but polynomials qualifying as the first "+string(i)+" primary invariants.";
     3622        "         but polynomials qualifying as the first ",i," primary invariants.";
    36233623        return(matrix(P));
    36243624      }
     
    37393739    d++;                               // degree where we'll search
    37403740    if (v)
    3741     { "  Computing primary invariants in degree "+string(d)+":";
     3741    { "  Computing primary invariants in degree ",d,":";
    37423742    }
    37433743    B=invariant_basis_reynolds(REY,d,intvec(-1,6)); // basis of invariants of
     
    37673767      if (ncols(P)==n+1)
    37683768      { "WARNING: The first return value is not a set of primary invariants,";
    3769         "         but polynomials qualifying as the first "+string(i)+" primary invariants.";
     3769        "         but polynomials qualifying as the first ",i," primary invariants.";
    37703770        return(matrix(P));
    37713771      }
     
    38973897    d++;                               // degree where we'll search
    38983898    if (v)
    3899     { "  Computing primary invariants in degree "+string(d)+":";
     3899    { "  Computing primary invariants in degree ",d,":";
    39003900    }
    39013901    B=invariant_basis(d,#[1..gen_num]); // basis of invariants of degree d
     
    39243924      if (ncols(P)==n+1)
    39253925      { "WARNING: The first return value is not a set of primary invariants,";
    3926         "         but polynomials qualifying as the first "+string(i)+" primary invariants.";
     3926        "         but polynomials qualifying as the first ",i," primary invariants.";
    39273927        return(matrix(P));
    39283928      }
     
    43394339    {                                  // elements in the current degree (i-1)
    43404340      if (v)
    4341       { "Searching in degree "+string(i-1)+", we need to find "+string(int(dimmat[i,1]))+" invariant(s)...";
     4341      { "Searching in degree ",i-1,", we need to find ",int(dimmat[i,1])," invariant(s)...";
    43424342      }
    43434343      TEST=sP;
     
    44674467          of monomials) of the basering modulo the primary invariants, mapping
    44684468          those to invariants with the Reynolds operator. Among these images
    4469           or their power products we pick secondary invariants using Groebner 
    4470           basis techniques (see S. King: Fast Computation of Secondary 
     4469          or their power products we pick secondary invariants using Groebner
     4470          basis techniques (see S. King: Fast Computation of Secondary
    44714471          Invariants).
    44724472          The size of this set can be read off from the Molien series.
     
    46264626    {                                  // elements in the current degree (i-1)
    46274627      if (v)
    4628       { "Searching in degree "+string(i-1)+", we need to find "+string(int(dimmat[i,1]))+
     4628      { "Searching in degree ",i-1,", we need to find ",int(dimmat[i,1]),
    46294629        " invariant(s)...";
    46304630        "  Looking for Power Products...";
     
    49194919          of monomials) of the basering modulo the primary invariants, mapping
    49204920          those to invariants with the Reynolds operator. Among these images
    4921           or their power products we pick secondary invariants using Groebner 
     4921          or their power products we pick secondary invariants using Groebner
    49224922          basis techniques (see S. King: Fast Computation of Secondary Invariants).
    49234923          The size of this set can be read off from the Molien series. Here, only
     
    50925092    {                                  // elements in the current degree (i-1)
    50935093      if (v)
    5094       { "Searching in degree "+string(i-1)+". There are "+
    5095         string(int(dimmat[i,1]))+" secondary invariant(s)...";
     5094      { "Searching in degree ",i-1,". There are ",
     5095        int(dimmat[i,1])," secondary invariant(s)...";
    50965096      }
    50975097      counter = 0;                       // we'll count up to dimmat[i,1]
     
    51745174                      attrib(RedSSort[i-1][k],"size",saveAttr);
    51755175                      if (v)
    5176                       { "    We found reducible sec. inv. number "+string(counter);
     5176                      { "    We found reducible sec. inv. number ",counter;
    51775177                      }
    51785178                      if (int(dimmat[i,1])<>counter)
     
    52395239              { RedISSort[i-1] = NF(B,sP);
    52405240              }
    5241               if (v) {"    We found "+string(size(B))+" irred. sec. inv.";}
     5241              if (v) {"    We found ",size(B)," irred. sec. inv.";}
    52425242            }
    52435243            else
     
    52945294                  }
    52955295                  if (v)
    5296                   { "    We found irred. sec. inv. number "+string(irrcounter);
     5296                  { "    We found irred. sec. inv. number ",irrcounter;
    52975297                  }
    52985298                  Reductor = ideal(helpP);
     
    53315331              { RedISSort[i-1] = B;
    53325332              }
    5333               if (v) {"    We found "+string(size(B))+" irred. sec. inv.";}
     5333              if (v) {"    We found ",size(B)," irred. sec. inv.";}
    53345334            }
    53355335            else
     
    53575357                  }
    53585358                  if (v)
    5359                   { "    We found irred. sec. inv. number "+string(irrcounter);
     5359                  { "    We found irred. sec. inv. number ",irrcounter;
    53605360                  }
    53615361                  Reductor = ideal(helpP);
     
    55125512    {                                  // elements in the current degree (i-1)
    55135513      if (v)
    5514       { "Searching in degree "+string(i-1)+", we need to find "+string(deg_dim_vec[i])+" invariant(s)...";
     5514      { "Searching in degree ",i-1,", we need to find ",deg_dim_vec[i]," invariant(s)...";
    55155515      }
    55165516      TEST=sP;
     
    56505650          of monomials) of the basering modulo the primary invariants, mapping
    56515651          those to invariants with the Reynolds operator. Among these images
    5652           or their power products we pick secondary invariants using Groebner 
     5652          or their power products we pick secondary invariants using Groebner
    56535653          basis techniques (see S. King: Fast Computation of Secondary Invariants).
    56545654          The size of this set can be read off from the Molien series.
     
    58115811    {                                  // elements in the current degree (i-1)
    58125812      if (v)
    5813       { "Searching in degree "+string(i-1)+", we need to find "+string(deg_dim_vec[i])+
     5813      { "Searching in degree ",i-1,", we need to find ",deg_dim_vec[i],
    58145814        " invariant(s)...";
    58155815        "  Looking for Power Products...";
     
    61106110          hence the number of secondary invariants is the product of the degrees of
    61116111          primary invariants divided by the group order.
    6112 NOTE:     <secondary_and_irreducibles_no_molien> should usually be faster and of 
     6112NOTE:     <secondary_and_irreducibles_no_molien> should usually be faster and of
    61136113          more useful functionality.
    61146114SEE ALSO: secondary_and_irreducibles_no_molien
     
    61946194  max=max/nrows(REY);
    61956195  if (v)
    6196   { "  We need to find "+string(max)+" secondary invariants.";
     6196  { "  We need to find ",max," secondary invariants.";
    61976197    "";
    61986198    "In degree 0 we have: 1";
     
    62336233    if (deg_vec[k]<>i)
    62346234    { if (v)
    6235       { "Searching in degree "+string(i)+"...";
     6235      { "Searching in degree ",i,"...";
    62366236      }
    62376237      mon = kbase(sP,i);
     
    62676267            S[counter] = B[j];
    62686268            if (v)
    6269             { "    We found sec. inv. number "+string(counter)+" in degree "+string(i);
     6269            { "    We found sec. inv. number ",counter," in degree ",i;
    62706270            }
    62716271            if (counter == max) {break;}
     
    62996299            S[counter] = B[j];
    63006300            if (v)
    6301             { "    We found sec. inv. number "+string(counter)+" in degree "+string(i);
     6301            { "    We found sec. inv. number ",counter," in degree ",i;
    63026302            }
    63036303            if (counter == max) {break;}
     
    63566356         monomials) of the basering modulo primary invariants, mapping those to
    63576357         invariants with the Reynolds operator. Among these images
    6358          or their power products we pick secondary invariants using Groebner 
     6358         or their power products we pick secondary invariants using Groebner
    63596359         basis techniques (see S. King: Fast Computation of Secondary Invariants).
    63606360         We have the Reynolds operator, hence, we are in the non-modular case.
     
    64476447  max=max/nrows(REY);
    64486448  if (v)
    6449   { "  We need to find "+string(max)+" secondary invariants.";
     6449  { "  We need to find ",max," secondary invariants.";
    64506450    "";
    64516451    "In degree 0 we have: 1";
     
    65026502    if (deg_vec[l]<>i-1)
    65036503    { if (v)
    6504       { "Searching in degree "+string(i-1);
     6504      { "Searching in degree ",i-1;
    65056505        "  Looking for Power Products...";
    65066506      }
     
    68636863  { d++;
    68646864    if (deg_vec[l]<>d)
    6865     { if (v) { "Searching irred. sec. inv. in degree "+string(d); }
     6865    { if (v) { "Searching irred. sec. inv. in degree ",d; }
    68666866      NewIS = ideal();
    68676867      NewIScounter=0;
     
    68726872      if (mon[1]<>0)
    68736873      {
    6874         if (v) { "  We have "+string(monsize)+" candidates for irred. secondaries";}
     6874        if (v) { "  We have ",monsize," candidates for irred. secondaries";}
    68756875        block=0; // Loops through the monomials
    68766876        while (block<monsize)
     
    68956895          if (helpP<>0)
    68966896          { counter++; // found new irr. sec. inv.!
    6897             if (v) { "    We found irr. sec. inv. number "+string(counter)+" in degree "+string(d); }
     6897            if (v) { "    We found irr. sec. inv. number ",counter," in degree ",d; }
    68986898            IS[counter] = Inv[block];
    68996899            sIS = sIS,helpP;
     
    70177017  }
    70187018  // ring alskdfalkdsj=0,x,dp;
    7019   // matrix M[1][2]=1,(1-x)^n;           
     7019  // matrix M[1][2]=1,(1-x)^n;
    70207020  // export alskdfalkdsj;
    70217021  // export M;                            // we look at our primary invariants as
     
    70707070//  module M(2)=syz(M(1));               // nres(M(1),2)[2];
    70717071//  option(set,save_opts);
    7072   if (v) 
     7072  if (v)
    70737073  { "Syzygies of the \"trivial\" secondaries"; }
    70747074  module M(2)=nres(M(1),2)[2];
     
    70797079  // ring, generated by the primary invariants
    70807080
    7081   // generate a ring where we can do elimination 
     7081  // generate a ring where we can do elimination
    70827082  // in order to make it weighted homogeneous, we choose appropriate weights
    70837083  if (v)
     
    70987098  ideal GElimP = std(ElimP,EPvec,degvec(maxideal(1)));
    70997099  attrib(GElimP,"isSB",1);
    7100   int newN = ncols(GElimP); 
     7100  int newN = ncols(GElimP);
    71017101  matrix M[k][m+k*newN];
    71027102  M[1..k,1..m]=matrix(imap(br,M(2)));        // will contain a module -
     
    71067106    }
    71077107  }
    7108 
    7109   M=elim(module(M),1..n);               // eliminating x(1..n), std-calculation
    7110                                          // is done internally -
     7108  M=elim(module(M),1..n);   // eliminating x(1..n), std-calculation
     7109                            // is done internally -
     7110  //M=std(module(M));                // we have already an elimination ordering
     7111  //M=nselect(M,1..n);
    71117112  M=homog(module(M),h);            // homogenize for 'minbase'
    71127113  M=minbase(module(M));
     
    81718172THEORY:   We do an incremental search in increasing degree d. Generators of the invariant
    81728173          ring are found among the orbit sums of degree d. The generators are chosen by
    8173           Groebner basis techniques (see S. King: Minimal generating sets of non-modular 
     8174          Groebner basis techniques (see S. King: Minimal generating sets of non-modular
    81748175          invariant rings of finite groups).
    8175 NOTE:     invariant_algebra_perm should not be used in rings with weighted orders. 
     8176NOTE:     invariant_algebra_perm should not be used in rings with weighted orders.
    81768177SEE ALSO: invariant_algebra_reynolds
    81778178KEYWORDS: invariant ring minimal generating set permutation group
     
    82668267    OrbSize = ncols(OrbSums);
    82678268    if (v)
    8268     { "  We have "+string(OrbSize)+" orbit sums of degree "+string(d);
     8269    { "  We have ",OrbSize," orbit sums of degree ",d;
    82698270    }
    82708271    RedSums = reduce(OrbSums,sG);
     
    82778278        totalcount++;
    82788279        if (v)
    8279         { "    We found generator number "+string(totalcount)+
    8280           " in degree "+string(d);
     8280        { "    We found generator number ",totalcount,
     8281          " in degree ",d;
    82818282        }
    82828283        G[totalcount] = OrbSums[i];
     
    83508351THEORY:   We do an incremental search in increasing degree d. Generators of the invariant
    83518352          ring are found among the Reynolds images of monomials of degree d. The generators are
    8352           chosen by Groebner basis techniques (see S. King: Minimal generating sets of 
     8353          chosen by Groebner basis techniques (see S. King: Minimal generating sets of
    83538354          non-modular invariant rings of finite groups).
    83548355NOTE:     invariant_algebra_reynolds should not be used in rings with weighted orders.
     
    83868387    monsize = ncols(mon);
    83878388    if (mon[1]<>0)
    8388     { if (v) { "  We have "+string(monsize)+
    8389      " relevant monomials in degree "+string(d);}
     8389    { if (v) { "  We have ",monsize,
     8390     " relevant monomials in degree ",d;}
    83908391      block=0; // Loops through the monomials
    83918392      while (block<monsize)
     
    84108411        if (helpP<>0)
    84118412        { counter++; // found new inv. algebra generator!
    8412           if (v) { "    We found generator number "+string(counter)+
    8413                    " in degree "+string(d); }
     8413          if (v) { "    We found generator number ",counter," in degree ",d; }
    84148414          G[counter] = Inv[block];
    84158415          sG[sGoffset+counter] = helpP;
Note: See TracChangeset for help on using the changeset viewer.