Changeset 6e8b02 in git


Ignore:
Timestamp:
Dec 22, 2014, 6:07:53 PM (9 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
dbe6a83090d114bef7df435a1e47e660f753e2dc
Parents:
20863c905e3e6d10e3e1e6de5a625a88d4ba28b2
Message:
fix: prepareQuotientring
Location:
Singular/LIB
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/primdec.lib

    r20863c r6e8b02  
    18731873///////////////////////////////////////////////////////////////////////////////
    18741874
    1875 static proc prepareQuotientring (int nnp)
    1876 "USAGE:   prepareQuotientring(nnp); nnp int
    1877 RETURN:  string = to define Kvar(nnp+1),...,var(nvars)[..rest ]
    1878 NOTE:
     1875static proc prepareQuotientring (int nnp,string order)
     1876"USAGE:   prepareQuotientring(nnp, order); nnp int, order string
     1877RETURN:  Kvar(nnp+1),...,var(nvars)[..rest ]
    18791878EXAMPLE: example prepareQuotientring; shows an example
    18801879"
     
    18831882  ASSUME(1, not isQuotientRing(basering) ) ;
    18841883  ASSUME(1, hasGlobalOrdering(basering) ) ;
    1885   ideal @ih,@jh;
    1886   int npar=npars(basering);
    1887   int @n;
    1888 
    1889   string quotring= "ring quring = ("+charstr(basering);
    1890   for(@n=nnp+1;@n<=nvars(basering);@n++)
    1891   {
    1892      quotring=quotring+",var("+string(@n)+")";
    1893      @ih=@ih+var(@n);
    1894   }
    1895 
    1896   quotring=quotring+"),(var(1)";
    1897   @jh=@jh+var(1);
    1898   for(@n=2;@n<=nnp;@n++)
    1899   {
    1900     quotring=quotring+",var("+string(@n)+")";
    1901     @jh=@jh+var(@n);
    1902   }
    1903   quotring=quotring+"),(C,lp);";
    1904 
     1884  list rl=ringlist(basering);
     1885  if (typeof(rl[1])=="int")
     1886  {
     1887    int p=rl[1];
     1888    list rl2=rl[2];
     1889    rl[1]=list(p,
     1890            list(rl2[nnp+1..nvars(basering)]),
     1891            list(list("lp",1:(nvars(basering)-nnp))),
     1892            ideal(0));
     1893    rl[2]=list(rl2[1..nnp]);
     1894    rl[3]=list(list(order,1:nnp),list("C",0));
     1895  }
     1896  else
     1897  {
     1898    if (typeof(rl[1])=="list")
     1899    list rl1=rl[1];
     1900    list rl2=rl[2];
     1901    rl1[1]=list(rl1[1][1],
     1902            rl[1][2]+list(rl2[nnp+1..nvars(basering)]),
     1903            list(list("lp",1:(size(rl[1][2])+nvars(basering)-nnp))),
     1904            ideal(0));
     1905    rl[1]=rl1;
     1906    rl[2]=list(rl2[1..nnp]);
     1907    rl[3]=list(list(order,1:nnp),list("C",0));
     1908  }
     1909  def quotring=ring(rl);
    19051910  return(quotring);
    1906 
    19071911}
    19081912example
    19091913{ "EXAMPLE:"; echo = 2;
    19101914   ring s1=(0,x),(a,b,c,d,e,f,g),lp;
    1911    def @Q=basering;
    1912    list l= prepareQuotientring(3);
    1913    l;
    1914    execute(l[1]);
    1915    execute(l[2]);
    1916    basering;
    1917    phi;
    1918    setring @Q;
     1915   def Q= prepareQuotientring(3,"lp");
     1916   Q;
    19191917}
    19201918
     
    25812579     ideal j=groebner(imap(gnir,j));
    25822580  }
    2583   string quotring=prepareQuotientring(nvars(basering)-indep[1][3]);
    2584   execute(quotring);
     2581  def quotring=prepareQuotientring(nvars(basering)-indep[1][3],"lp");
     2582  setring quotring;
    25852583  ideal j=imap(gnir1,j);
    25862584  kill gnir1;
     
    25922590  }
    25932591  setring gnir;
    2594   ideal h=imap(quring,h);
    2595   kill quring;
     2592  ideal h=imap(quotring,h);
     2593  kill quotring;
    25962594
    25972595  list l=minSat(j,h);
     
    31003098
    31013099  poly @gs,@gh,@p;
    3102   string @va,quotring;
     3100  string @va;
     3101  def quotring;
    31033102  list quprimary,htprimary,collectprimary,lsau,lnew,allindep,restindep;
    31043103  ideal @h;
     
    32283227    //------------------------------------------------------------------------
    32293228
    3230     quotring=prepareQuotientring(nvars(basering)-indep[@m][3]);
     3229    def quotring=prepareQuotientring(nvars(basering)-indep[@m][3],"lp");
    32313230
    32323231    //---------------------------------------------------------------------
     
    32353234
    32363235    ideal @jj=lead(@j);               //!! vorn vereinbaren
    3237     execute(quotring);
     3236    setring quotring;
    32383237
    32393238    ideal @jj=imap(gnir1,@jj);
     
    32493248    }
    32503249    @j=simplify(@j,2);
    3251     setring quring;
     3250    setring quotring;
    32523251    // @j considered in the quotientring
    32533252    ideal @j=imap(gnir1,@j);
     
    33363335    setring gnir;
    33373336
    3338     collectprimary=imap(quring,uprimary);
    3339     lsau=imap(quring,saturn);
    3340     @h=imap(quring,@h);
    3341 
    3342     kill quring;
     3337    collectprimary=imap(quotring,uprimary);
     3338    lsau=imap(quotring,saturn);
     3339    @h=imap(quotring,@h);
     3340
     3341    kill quotring;
    33433342
    33443343    @n2=size(quprimary);
     
    35413540        //------------------------------------------------------------------
    35423541
    3543         quotring=prepareQuotientring(nvars(basering)-restindep[@m][3]);
     3542        def quotring=prepareQuotientring(nvars(basering)-restindep[@m][3],"lp");
    35443543
    35453544        //------------------------------------------------------------------
     
    35473546        //------------------------------------------------------------------
    35483547
    3549         execute(quotring);
     3548        setring quotring;
    35503549
    35513550        // @j considered in the quotientring
     
    36253624        //------------------------------------------------------------------
    36263625        setring gnir;
    3627         collectprimary=imap(quring,uprimary);
    3628         lsau=imap(quring,saturn);
    3629         @h=imap(quring,@h);
    3630 
    3631         kill quring;
     3626        collectprimary=imap(quotring,uprimary);
     3627        lsau=imap(quotring,saturn);
     3628        @h=imap(quotring,@h);
     3629
     3630        kill quotring;
    36323631
    36333632        @n2=size(quprimary);
     
    62156214  ideal fac, @h, collectrad, lsau;
    62166215  poly @q;
    6217   string @va, quotring;
     6216  string @va; def quotring;
    62186217
    62196218  def @P = basering;
     
    63246323    // K(var(nnpr+1),..,var(nva))[..the rest..]
    63256324    //------------------------------------------------------------------------
    6326     quotring = prepareQuotientRingDp(nvars(basering) - indep[@m][3]);
     6325    quotring = prepareQuotientring(nvars(basering) - indep[@m][3],"dp");
    63276326    //------------------------------------------------------------------------
    63286327    // We pass to the quotientring   K(var(nnp+1),..,var(nva))[..the rest..]
    63296328    //------------------------------------------------------------------------
    63306329
    6331     execute(quotring);
     6330    setring quotring;
    63326331
    63336332    // @j considered in the quotientring
     
    63876386    setring @P;
    63886387
    6389     collectrad = imap(quring, zero_rad);
    6390     lsau = simplify(imap(quring, hpl), 2);
    6391     @h = imap(quring, @h);
    6392 
    6393     kill quring;
     6388    collectrad = imap(quotring, zero_rad);
     6389    lsau = simplify(imap(quotring, hpl), 2);
     6390    @h = imap(quotring, @h);
     6391
     6392    kill quotring;
    63946393
    63956394    // Here the intersection with the polynomialring
     
    66356634}
    66366635
    6637 
    6638 ///////////////////////////////////////////////////////////////////////////////
    6639 // based on prepareQuotientring
    6640 // The order returned is now (C, dp) instead of (C, lp)
    6641 
    6642 static proc prepareQuotientRingDp (int nnp)
    6643 "USAGE:   prepareQuotientRingDp(nnp); nnp int
    6644 RETURN:  string = to define Kvar(nnp+1),...,var(nvars)[..rest ]
    6645 NOTE:
    6646 EXAMPLE: example prepareQuotientRingDp; shows an example
    6647 "
    6648 {
    6649   ASSUME(1, hasFieldCoefficient(basering) );
    6650   ASSUME(1, not isQuotientRing(basering) ) ;
    6651   ASSUME(1, hasGlobalOrdering(basering) ) ;
    6652 
    6653   ideal @ih,@jh;
    6654   int npar=npars(basering);
    6655   int @n;
    6656 
    6657   string quotring= "ring quring = ("+charstr(basering);
    6658   for(@n = nnp + 1; @n <= nvars(basering); @n++)
    6659   {
    6660      quotring = quotring + ", var(" + string(@n) + ")";
    6661      @ih = @ih + var(@n);
    6662   }
    6663 
    6664   quotring = quotring+"),(var(1)";
    6665   @jh = @jh + var(1);
    6666   for(@n = 2; @n <= nnp; @n++)
    6667   {
    6668     quotring = quotring + ", var(" + string(@n) + ")";
    6669     @jh = @jh + var(@n);
    6670   }
    6671   // SL 2006-04-21 1 The order returned is now (C, dp) instead of (C, lp)
    6672   quotring = quotring + "), (C, dp);";
    6673   // SL 2006-04-21 2
    6674 
    6675   return(quotring);
    6676 }
    6677 example
    6678 { "EXAMPLE:"; echo = 2;
    6679    ring s1=(0,x),(a,b,c,d,e,f,g),lp;
    6680    def @Q=basering;
    6681    list l= prepareQuotientRingDp(3);
    6682    l;
    6683    execute(l[1]);
    6684    execute(l[2]);
    6685    basering;
    6686    phi;
    6687    setring @Q;
    6688 
    6689 }
    66906636
    66916637///////////////////////////////////////////////////////////////////////////////
     
    73547300
    73557301  poly @gs,@gh,@p;
    7356   string @va,quotring;
     7302  string @va;
    73577303  list quprimary,htprimary,collectprimary,lsau,lnew,allindep,restindep;
    73587304  ideal @h;
     
    76197565           //------------------------------------------------------------------
    76207566
    7621            quotring=prepareQuotientring(nvars(basering)-restindep[@m][3]);
     7567           quotring=prepareQuotientring(nvars(basering)-restindep[@m][3],"lp");
    76227568
    76237569           //------------------------------------------------------------------
     
    76257571           //------------------------------------------------------------------
    76267572
    7627            execute(quotring);
     7573           setring quotring;
    76287574
    76297575           // @j considered in the quotientring
     
    77037649           //------------------------------------------------------------------
    77047650           setring gnir;
    7705            collectprimary=imap(quring,uprimary);
    7706            lsau=imap(quring,saturn);
    7707            @h=imap(quring,@h);
    7708 
    7709            kill quring;
     7651           collectprimary=imap(quotring,uprimary);
     7652           lsau=imap(quotring,saturn);
     7653           @h=imap(quotring,@h);
     7654
     7655           kill quotring;
    77107656
    77117657
     
    78747820
    78757821   string @va;
    7876    string quotring;
     7822   def quotring;
    78777823   intvec op;
    78787824   intvec @vv;
     
    79677913   //------------------------------------------------------------------------
    79687914
    7969    quotring=prepareQuotientring(nvars(basering)-indepInfo[3]);
     7915   quotring=prepareQuotientring(nvars(basering)-indepInfo[3],"lp");
    79707916
    79717917   //---------------------------------------------------------------------
     
    79747920
    79757921   ideal @jj=lead(@j);               //!! vorn vereinbaren
    7976    execute(quotring);
     7922   setring quotring;
    79777923
    79787924   ideal @jj=imap(gnir1,@jj);
     
    79887934   }
    79897935   @j=simplify(@j,2);
    7990    setring quring;
     7936   setring quotring;
    79917937   // @j considered in the quotientring
    79927938   ideal @j=imap(gnir1,@j);
     
    80788024   setring gnir;
    80798025
    8080    collectprimary=imap(quring,uprimary);
    8081    lsau=imap(quring,saturn);
    8082    @h=imap(quring,@h);
    8083 
    8084    kill quring;
     8026   collectprimary=imap(quotring,uprimary);
     8027   lsau=imap(quotring,saturn);
     8028   @h=imap(quotring,@h);
     8029
     8030   kill quotring;
    80858031
    80868032   @n2=size(quprimary);
  • Singular/LIB/primdecint.lib

    r20863c r6e8b02  
    11331133            //=== this is our way to obtain the coefficients in Z[u] of the
    11341134            //=== leading terms of the Groebner basis above
    1135             string quotring=Primdec::prepareQuotientring(nvars(basering)-L[1][3]);
    1136             execute(quotring);
     1135            def quring=Primdec::prepareQuotientring(nvars(basering)-L[1][3],"lp");
     1136            setring quring;
    11371137            ideal I=imap(Shelp,I);
    11381138            list C;
     
    14411441         //=== this is our way to obtain the coefficients in Z[u] of the
    14421442         //=== leading terms of the Groebner basis above
    1443          string quotring=Primdec::prepareQuotientring(nvars(basering)-L[1][3]);
    1444          execute(quotring);
     1443         def quring=Primdec::prepareQuotientring(nvars(basering)-L[1][3],"lp");
     1444         setring quring;
    14451445         module I=imap(Shelp,I);
    14461446         list C;
Note: See TracChangeset for help on using the changeset viewer.