Changeset fac3ec in git


Ignore:
Timestamp:
Jun 3, 2020, 4:05:24 PM (4 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
c2b991812d200ff53e5b84053d8ed56c0e2c51a0
Parents:
6f25ae1c3ecfd4dbc7f6815716b2cb7ab4644d9d
Message:
new grobcov.lib
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/grobcov.lib

    r6f25ae rfac3ec  
    11//////////////////////////////////////////////////////////////////////////////
    2 version="version grobcov.lib 4.1.2.  January_2020 "; // $Id$;
    3            // version N9;  January 2020;
     2version="version grobcov.lib 4.1.3  January_2020 "; // $Id$
     3           // version N10;  June 2020;
    44info="
    55LIBRARY:  grobcov.lib
     
    120120          hypothesis and thesis in ADGT.
    121121
    122           This version was finished on 1/2/2020,
     122          This version was finished on 26/5/2020,
    123123
    124124
     
    247247          determines a CGS in full-representation using WLemma
    248248
    249 intersectpar(L); Auxiliary routine. Given a list of ideals defined on K[a][x]
     249intersectpar(L); Auxiliary routine. Given a list of ideals definend on K[a][x]
    250250         it determines the intersection of all of them in K[x,a]
    251251
     
    321321// Release N9: December 2019. New routine DifConsLCSets,
    322322// Updated also ADGT to use as option DifConsLCSets
     323// Release N10: May 2020.
     324// Updated locus. New determination of the taxonomies
    323325
    324326//*************Auxiliary routines**************
     
    964966        mu=mu*nu;
    965967        rho=qlc[1]*qlm;
    966         //"T_nu="; nu; "mu="; mu; "rho="; rho;
    967968        p=nu*p-rho*F[i];
    968969        r=nu*r;
    969970        for (j=1;j<=size(F);j++){q[j]=nu*q[j];}
    970971        q[i]=q[i]+rho;
    971         //"T_q[i]="; q[i];
    972972        divoc=1;
    973973      }
     
    979979      p=p-lcp*lpp;
    980980    }
    981     //"T_r="; r; "p="; p;
    982981  }
    983982  list res=r,q,mu;
     
    16571656    }
    16581657  }
    1659   //"T_before="; prep;
    16601658  if (size(prep)==0){prep=list(list(ideal(1),list(ideal(1))));}
    1661   //"T_Prep="; prep;
    1662   //def Lout=CompleteA(prep,prep);
    1663   //"T_Lout="; Lout;
    16641659  return(prep);
    16651660}
     
    17391734  {
    17401735    option(returnSB);
    1741     //"T_Lp[i]="; Lp[i];
    17421736    N=Lp[i][1];
    17431737    Lb=Lp[i][2];
    1744     //"T_Lb="; Lb;
    17451738    ida=intersect(ida,N);
    17461739    for(j=1;j<=size(Lb);j++)
     
    19541947    def BH=imap(RR,B2);
    19551948    def LH=imap(RR,LL);
    1956     //"T_BH="; BH;
    1957     //"T_LH="; LH;
    19581949    for (i=1;i<=size(BH);i++)
    19591950    {
     
    19671958    def RPH=DH+PH;
    19681959    def GSH=KSW(BH,LH);
    1969     //"T_GSH="; GSH;
    19701960    //setglobalrings();
    19711961    // DEHOMOGENIZING THE RESULT
     
    21012091    P[i]=L[Q[i][1]][Q[i][2]];
    21022092  }
    2103   //"T_P="; P;
    21042093  // P is the list of the maximal components of the union
    21052094  //   with the corresponding initial holes.
     
    21392128  int i; int j; int k; list H; list C; list T;
    21402129  list L0; list P0; list P; list Q0; list Q;
    2141   //"T_L="; L;
    21422130  for (i=1;i<=size(L);i++)
    21432131  {
     
    21482136    }
    21492137  }
    2150   //"T_P0="; P0;
    21512138  Q0=selectminideals(P0);
    2152   //"T_Q0="; Q0;
    21532139  for (i=1;i<=size(Q0);i++)
    21542140  {
     
    21562142    P[i]=L[Q0[i][1]];// [Q[i][2]];
    21572143  }
    2158   //"T_P="; P;
    21592144  // P is the list of the maximal components of the union
    21602145  //   with the corresponding initial holes.
     
    22642249static proc addpartfine(list H, list C0)
    22652250{
    2266   //"T_H="; H;
    22672251  int i; int j; int k; int te; intvec notQ; int l; list sel;
    22682252  intvec jtesC;
     
    23512335static proc needcombine(list LCU,ideal N)
    23522336{
    2353   //"Deciding if combine is needed";;
    23542337  ideal BB;
    23552338  int tes=0; int m=1; int j; int k; poly sp;
     
    25262509      LCU[k][1]=B;
    25272510    }
    2528     //"Deciding if combine is needed";
    25292511    crep=PtoCrep(prep);
    25302512    if(size(LCU)>1){tes=1;}
     
    32613243  }
    32623244  combpolys=reform(combpolys,numdens);
    3263   //"T_combpolys="; combpolys;
    32643245  //setring(RR);
    32653246  //def combpolysT=imap(P,combpolys);
     
    39753956  {
    39763957    CG=KSWtocgsdr(CG);
    3977     //"T_CG="; CG;
    39783958    if( size(CG)>0)
    39793959    {
     
    43694349  {
    43704350    t=T[i];
    4371     //"T_t"; t;
    43724351    P=0; Q=1;
    43734352    for(j=1;j<=n;j++)
     
    43834362    }
    43844363    Cb=Crep0(P,Q);
    4385     //"T_Cb="; Cb;
    43864364    if(size(Cb)!=0)
    43874365    {
     
    44724450  {
    44734451    K=FirstLevel(B);
    4474     //"T_K="; K;
    44754452    L[size(L)+1]=K[1];
    44764453    B=K[2];
     
    45934570  if (size(B) mod 2==1){B[size(B)+1]=ideal(1);}
    45944571  if (size(A) mod 2==1){A[size(A)+1]=ideal(1);}
    4595   //"T_A=";A;
    4596  // "T_B="; B;
    45974572  n=size(A) div 2;
    45984573  m=(size(B) div 2)-1;
     
    46134588      //string("T_j=",j);
    46144589      ABdw=intersectpar(list(A[2*i],B[2*j+1]));
    4615       //"T_ABdw="; ABdw;
    46164590      ABup=A[2*i-1];
    4617       //"T_ABup1="; ABup;
    46184591      if(j>0)
    46194592      {
     
    46234596        }
    46244597      }
    4625       //"T_ABup2="; ABup;
    46264598      ABupC=Crep(ABup,ideal(1));
    4627       //"T_ABupC="; ABupC;
    46284599      ABup=ABupC[1];
    4629        //"T_ABup="; ABup;
    46304600      if(ABup==1){t=0;}
    46314601     //if(equalideals(ABup,ideal(1))){t=0;}
     
    46334603      {
    46344604        M=Crep(ABup,ABdw);
    4635         //"T_M="; M;
    46364605        //if(not(equalideals(M[1],ideal(1)))) {L[size(L)+1]=M;}
    46374606        if(not(size(M)==0)) {L[size(L)+1]=M;}
    46384607      }
    4639       //"L="; L;
    46404608      j++;
    46414609    }
     
    47514719  attrib(NP,"IsSB",1);
    47524720  int d=dim(std(NP));
    4753   //"T_d="; d;
    47544721  if(d==0){te=0;}
    47554722  setring(RR);
     
    47744741 }
    47754742
    4776 //  DimPar
     4743//  DimComp
    47774744//  Auxiliary routine to locus2 determining the dimension of a parametric ideal
    47784745//  it is identical to DimPar but adds information about the character of the component
     
    48554822          // independent of parameters giving the variables with dimension 0
    48564823       dd=indepparameters(B);
    4857        //"T_dd="; dd;
    48584824        if (dd==1){d=0; L0=d,string(B);}  // ,determineF(B,F,E)
    48594825        else{d=1; L0=2,"Normal";}
     
    48624828      {
    48634829        def RH=ringlist(RR);
    4864          //"T_RH="; RH;
    48654830        def H=RH;
    48664831        H[1]=0;
     
    49254890      }
    49264891    }
    4927      //"T_L0="; L0;
    49284892    return(L0);
    49294893  }
     
    49474911  def RRH=ring(H);
    49484912
    4949         //" ";string("Anti-image of Special component = ", GGG);
    49504913
    49514914   setring(RRH);
     
    49564919   ideal M=std(AA+FH);
    49574920   def rh=reduce(EH,M,5);
    4958    //"T_AA="; AA; "T_FH="; FH; "T_EH="; EH; "T_rh="; rh;
    49594921   if(rh==0){env=1;} else{env=0;}
    49604922   setring RR;
    49614923          //L0[3]=env;
    4962     //"T_env="; env;
    49634924    return(env);
    49644925}
     
    50054966  def D=ring(RX);
    50064967  def RP=D+P;
    5007   //"T_locus0 ha estat cridat";
    50084968  // if(defined(@P)==1){te=1; kill @P; kill @R; kill @RP; }
    50094969  // setglobalrings();
     
    50995059  } //In P1 factors in the basis independent of the parameters have been obtained
    51005060  ideal BB; int dd; list NS;
     5061  // "T_AQUI_3";
    51015062  for(i=1;i<=size(P1);i++)
    51025063  {
    5103      //"T_P1="; P1;
    51045064     NS=NorSing(P1[i][3],P1[i][1],P1[i][2][1],DD);
    5105      //"T_NS="; NS;
    51065065     dd=NS[1];
    51075066     if(dd==0){P1[i][3]=NS;}  //"Special"; //dd==0
     
    52125171//              If all levels of a class of locus are 1, then the set is locally closed. Otherwise the level
    52135172//              gives the depth of the component.
     5173// static proc locus2(list G, ideal F, list #)
    52145174static proc locus2(list G, ideal F, list #)
    52155175{
    52165176 int st=timer;
    52175177 list Snor; list Snonor;
    5218  int d; int i; int j;
     5178 int d; int i; int j; int mt=0;
    52195179 def RR=basering;
    52205180 def Rx=ringlist(RR);
     
    52245184 list GG=G;
    52255185 int n=size(Rx[1][2]);
    5226  int moverdim;
     5186 int moverdim=n;
    52275187 for(i=1;i<=(size(DD) div 2);i++)
    52285188  {
    5229      if(DD[2*i-1]=="moverdim"){moverdim=DD[2*i];}
     5189     if(DD[2*i-1]=="moverdim"){moverdim=DD[2*i]; mt=1; }
    52305190     if(DD[2*i-1]=="vmov"){vmov=DD[2*i];}
    52315191//    if(DD[2*i-1]=="vmov"){vmov=DD[2*i];}
     
    52335193//    if(DD[2*i-1]=="comment"){comment=DD[2*i];}
    52345194//    if(DD[2*i-1]=="grobcov"){GG=DD[2*i];}
    5235     if(DD[2*i-1]=="anti-image"){tax=DD[2*i];}
    5236   }
     5195//    if(DD[2*i-1]=="anti-image"){tax=DD[2*i];}
     5196  }
     5197  if(mt==0){DD[size(DD)+1]="moverdim"; DD[size(DD)+1]=moverdim;}
    52375198 for(i=1;i<=size(GG);i++)
    52385199 {
     
    52585219   }
    52595220 }
    5260  //"T_Snor="; Snor;
    5261  //"T_Snonor="; Snonor;
    52625221 int tnor=size(Snor); int tnonor=size(Snonor);
    52635222 setring RP;
     
    52755234   SnonorP=LCUnionN(SnonorP);
    52765235 }
    5277  //"T_SnorP after LCUnion="; SnorP;
    5278 // "T_SnonorP  after LCUnion="; SnonorP;
    52795236 setring RR;
    52805237 ideal C;  list N;  list BAC; list AI;
     
    52965253     N=Snor[i][2];
    52975254     dimP=DimPar(C);
    5298       //"T_G="; G;
    52995255     AI=NS(F,G,C,N,DD);
    5300      //"T_AI="; AI;
    53015256     AI0=AI[2];
    53025257     if(size(AI)==3){AI[2]="normal"; AI[3]=ideal(0);}
    53035258     else
    53045259     {
    5305      if(AI[1]>=dimP)
    5306      {
    5307        AI[2]="Normal";
    5308        if(tax>0){AI[3]=AI0;}
    5309      }
    5310      else
    5311         {
    5312            //"T_Al=";
     5260       if(AI[1]>=dimP)
     5261       {
     5262         AI[2]="Normal";
     5263         if(tax>0){AI[3]=AI0;}
     5264       }
     5265       else
     5266       {
    53135267           if(AI[1]<n-1){AI[2]="Special"; AI[3]=AI0;}
    5314         }
     5268       }
    53155269     }
    53165270     Snor[i][size(Snor[i])+1]=AI;
     
    53255279 {
    53265280   Snonor=imap(RP,SnonorP);
    5327    //"T_Snonor="; Snonor;
    5328    //"T_G="; G;
    53295281   for(i=1;i<=size(Snonor);i++)
    53305282   {
    53315283     DAC=dimComp(Snonor[i][1]);
    53325284     Snonor[i][size(Snonor[i])+1]=DAC;
    5333      if(tax==1)
    5334      {
    5335        AINN=AISnonor(Snonor[i][1],GG);
    5336        Snonor[i][3][3]=AINN;
    5337       // AQUI ES ON AFEGIM LA ANTIMATGE DE LES NONOR
    5338      }
     5285//      if(tax==1)
     5286//      {
     5287//        AINN=AISnonor(Snonor[i][1],GG,DD);
     5288//        Snonor[i][3][3]=AINN;
     5289//       // AQUI ES ON AFEGIM LA ANTIMATGE DE LES NONOR
     5290//      }
    53395291   }
    53405292   for(i=1;i<=size(Snonor);i++)
     
    53855337  int n=size(Rx[1][2]);           // number of parameters
    53865338  def nv=nvars(RR);               // number of variables
    5387   int moverdim=nv;               // number of mover variables
     5339  int moverdim=n;                // number of mover variables
    53885340  ideal vmov;                         // mover variables   (bw)
    53895341  for(i=1;i<=(size(DD) div 2);i++)
     
    54045356  }
    54055357  //string("T_nv=",nv,"  moverdim=",moverdim);
    5406 //  "T_aixo es nou";
    54075358//  for(i=1;i<=nv;i++)
    54085359//  {
     
    54145365  ideal bu;                               // ideal of all variables   (u)
    54155366  for(i=1;i<=nv;i++){bu[i]=var(i);}
    5416   ideal mv;                            // ideal of mover variables
    5417   for(i=1;i<=nv;i++){mv[size(mv)+1]=var(i);}
     5367  ideal mv;
     5368// ULL
     5369// ideal of mover varibles
     5370//  for(i=1;i<=nv;i++){mv[size(mv)+1]=var(i);}
     5371   for(i=1;i<=nv;i++){mv[size(mv)+1]=var(i);}
    54185372
    54195373   // Searching the basis associated to C
     
    54315385   if(te==1){"ERROR";}
    54325386   def B=G[j0][2];  // Aixo aniria be per les nonor
    5433    //"T_B=G[j0][2]="; B;
    5434    //string("T_k0=",k0," G[",j0,"]="); G[j0];
    54355387
    54365388   // Searching the elements in Q[v_m]  on basis different from B that are nul there
     
    56145566  int n=size(Rx[1][2]);           // number of parameters
    56155567  def nv=nvars(RR);               // number of variables
    5616   int moverdim=nv;                     // number of mover variables
     5568  int moverdim=n;                // number of parameters
    56175569  ideal vmov;                         // mover variables   (bw)
    56185570
     
    56355587  ideal bu;                               // ideal of all variables   (u)
    56365588  for(i=1;i<=nv;i++){bu[i]=var(i);}
    5637   ideal mv;                            // ideal of mover variables
     5589  ideal mv;                            // ideal of mover varibles
    56385590  for(i=1;i<=nv;i++){mv[size(mv)+1]=var(i);}
    56395591
     
    56525604   if(te==1){"ERROR";}
    56535605   def B=G[j0][2];
    5654    //"T_B=G[j0][2]="; B;
    5655    //string("T_k0=",k0," G[",j0,"]="); G[j0];
    56565606   return(B);
    56575607}
     
    57185668   if(te==1){"ERROR";}
    57195669   def B=G[j0][2];     // basis associated to C
    5720    //"T_B="; B;
    57215670
    57225671  // Searching the elements in Q[vmov]  on bases different from B that are nul there
     
    57765725  poly kkk=1;
    57775726  if(size(NN)==0){NN[1]=kkk;}
    5778   //"T_NN="; NN;
    57795727
    57805728 // Union of F and B
     
    57835731   B[size(B)+1]=F[i];
    57845732 }
    5785  //"T_B+F="; B;
    57865733
    57875734  // Reducing  basis B modulo C  in the ring PR
     
    57975744    BBR[i]=reduce(BB[i],CC);
    57985745  }
    5799   //"T_BBR="; BBR;
    58005746
    58015747  // Selecting the elements of the ideal in Q[v]
     
    58105756    if(subset(variables(BBR[i]),vv)){BR[size(BR)+1]=BBR[i];}
    58115757  }
    5812   //"T_BR="; BR;
    58135758  // setring PR;
    58145759  // def BR=imap(RP,BRv);
     
    58365781   }
    58375782  }
    5838   //"T_BP="; BP;
    58395783
    58405784  //  Obtaining Am, the anti-image of C on vmov
     
    58475791    if (subset(variables(A[i]),vm)){Am[size(Am)+1]=A[i];}
    58485792  }
    5849   //"T_Am="; Am;
    5850 
    58515793
    58525794  list AIM=dimM(Am,nv,nm);
     
    58715813  Rx[3][1][2]=iv;
    58725814   def DM=ring(Rx);
    5873   //"Rx="; Rx;
    58745815  setring(DM);
    58755816  ideal KKMD=imap(RR,KKM);
     
    59175858  ideal vpar;
    59185859  ideal vvar;
    5919   //"T_n="; n;
    5920    //"T_nv="; nv;
    59215860  for(i=1;i<=n;i++){vpar[size(vpar)+1]=par(i);}
    59225861  for(i=1;i<=nv;i++){vvar[size(vvar)+1]=var(i);}
    5923   //string("T_vpar = ", vpar," vvar = ",vvar);
    59245862  def P=ring(Rx[1]);
    59255863  Rx[1]=0;
     
    59325870  //string("T_vvpar = ",vvpar);
    59335871  ideal B=std(FF);
    5934   //"T_B="; B;
    59355872  ideal Bel;
    5936   //"T_vvpar="; vvpar;
    59375873  for(i=1;i<=size(B);i++)
    59385874  {
    59395875    if(subset(variables(B[i]),vvpar)) {Bel[size(Bel)+1]=B[i];}
    59405876  }
    5941   //"T_Bel="; Bel;
    59425877  list H;
    59435878  list FH;
     
    59765911//               The third element tax is:
    59775912//                 for normal point components, tax=(d,taxonomy,anti-image)
    5978 //                    being d=dimension of the anti-image on the mover variables,
     5913//                    being d=dimension of the anti-image on the mover varaibles,
    59795914//                           taxonomy='Normal'  or  'Special', and
    59805915//                           anti-image=ideal of the anti-image over the mover variables
     
    60125947        in Q[x1,..,xn][u1,..,um],
    60135948        (x=tracer variables, u=mover variables).
    6014         The number of tracer variables is n=dim(space).
    6015         The mover variables can be restricted by the user to the last
    6016         k variaboes by adding the option \"moverdim\",k
    6017         (Inverts the concept of parameters and variables of
    6018         the ring).
     5949        The tracer variables are x1,..xn = dim(x-space).
     5950        By default, the mover variables are the last n u-variables.
     5951        Its number can be forced by the user to the last
     5952        k variables by adding the option \"moverdim\",k.
     5953        Nevertheless, this option is recommended only
     5954        to experiment, and can provide incorrect taxonomies.
    60195955OPTIONS: An option is a pair of arguments: string, integer.
    60205956        To modify the default options, pairs of arguments
     
    60255961        \"moverdim\", k  to restrict the mover-variables of the
    60265962        anti-image to the last k variables.
    6027         By default k is equal to the number of u-variables,
    6028         The restriction to a smaller value
    6029         can produce an error in the character
     5963        By defaulat k is equal to the last n u-variables,
     5964        We can experiment with a different value,
     5965        but this can produce an error in the character
    60305966         \"Normal\" or \"Special\" of a locus component.
    60315967
    6032         \"grobcov\", list of the previous computed grobcov(F).
     5968        \"grobcov\", L, where L is the list of a previous computed grobcov(F).
    60335969        It is to be used when we modify externally the grobcov,
    60345970        for example to obtain the real grobcov.
    6035 
    6036         \"anti-image\",0  if the anti-image is not to be
    6037         shown for \"Normal\" components.
    60385971
    60395972        \"comments\", c: by default it is 0, but it can be set
    60405973        to 1.
    60415974RETURN: The output is a list of the components:
    6042         ((p1,(p11,..p1s_1),tax_1),..,(pk,(pk1,..pks_k),tax_k)
     5975        ((p1,(p11,..p1s_1),tax_1), .., (pk,(pk1,..pks_k),tax_k)
    60435976        Elements 1 and 2 of a component represent the
    60445977        P-canonical form of the component.
     
    61056038  ideal vmov;
    61066039  int nv=nvars(RR);                                  // number of variables
    6107   int moverdim=nv; //size(ringlist(RR)[1][2]);   // number of parameters
    6108   if(moverdim>nv){moverdim=nv;}
     6040 // int moverdim=nv; //size(ringlist(RR)[1][2]);   // number of parameters
     6041  int moverdim=size(ringlist(RR)[1][2]);   // number of parameters
     6042    if(moverdim>nv){moverdim=nv;}
    61096043  // for(i=1;i<=nv;i++){vmov[size(vmov)+1]=var(i);}
    61106044  int version=2;
     
    61176051    if(DD[2*i-1]=="moverdim"){moverdim=DD[2*i];}
    61186052    if(DD[2*i-1]=="vmov"){vmov=DD[2*i];}
    6119     if(DD[2*i-1]=="version"){version=DD[2*i];}
     6053    // if(DD[2*i-1]=="version"){version=DD[2*i];}
    61206054    if(DD[2*i-1]=="comment"){comment=DD[2*i];}
    61216055    if(DD[2*i-1]=="grobcov"){GG=DD[2*i];}
    6122     if(DD[2*i-1]=="anti-image"){tax=DD[2*i];}
    6123   }
     6056  }
     6057  // if(version != 2){string("versions 0 and 1 are not available"); version=2;}
    61246058  for(i=1;i<=moverdim;i++){vmov[size(vmov)+1]=var(i+nv-moverdim);}
    61256059  if(size(GG)==0){GG=grobcov(F);}
    6126   //"T_GG=grobcov(F)="; GG;
    61276060  int j; int k; int te;
    61286061  def B0=GG[1][2];
     
    61306063  list nGP;
    61316064  if (equalideals(B0,ideal(1)) )
    6132   {
    6133     if(version==2){return(locus2(GG,F,DD));}
    6134     else{return(locus0(GG,DD));}
    6135   }
     6065  {return(locus2(GG,F,DD));}
     6066    // if(version==2){return(locus2(GG,F,DD));}
     6067    //   else{return(locus0(GG,DD));}
     6068    // }
    61366069  else
    61376070  {
    6138     n=nvars(R);
     6071    n=nvars(RR);
    61396072    ideal vB;
    61406073    ideal N;
     
    61956128  if(version==2)
    61966129  {
    6197     //"T_nGP="; nGP;
    61986130    def LL=locus2(nGP,F,DD);
    61996131  }
     
    64026334       ideal C=g_1(u_1,..u_m),..,g_s(u_1,..u_m);
    64036335       envelop(F,C[,options]);   where s<m.
     6336       x1,..,xn are the trtacer variables.
     6337       u_1,..,u_m are the auxiliary variables.
     6338       By default the las n variables are the mover variables.
    64046339RETURN: The output is a list of the components [C_1, .. , C_n]
    64056340       of the locus. Each component is given by
     
    64216356       To modify the default options,
    64226357       pairs of arguments -option name, value- of valid options
    6423        must be added to the call. The algorithm allows the
    6424        following option as pair of arguments:
     6358       must be added to the call.
     6359
     6360       The algorithm allows the following options as pair of arguments:
    64256361       \"comments\", c: by default it is 0, but it can be set to 1.
    64266362       \"anti-image\", a: by default a=1 and the anti-image is
    64276363       shown also for \"Normal\" components.
    64286364       For a=0, it is not shown.
     6365       \"moverdim\", k: by default it is equal to n, the number of
     6366       x-tracer variables.
    64296367NOTE: grobcov and locus are called internally.
    64306368       The basering R, must be of the form Q[x][u]
     
    64726410  int ng=size(C);
    64736411  ideal S=F;
    6474   //"T_C="; C;
    64756412  for(i=1;i<=size(C);i++){S[size(S)+1]=C[i];}
    6476   //"T_S="; S;
    64776413  int s=nv-ng;
    64786414  if(s>0)
     
    64806416    matrix M[ng+1][ng+1];
    64816417    def cc=comb(nv,ng+1);
    6482     //string("nv=",nv," ng=",ng," s=",s);
    6483     //"T_cc="; cc;
    64846418    poly J;
    64856419    for(k=1;k<=size(cc);k++)
     
    65896523       See book
    65906524       A. Montes. \"The Groebner Cover\":
     6525OPTIONS: \"moreinfo\",n  n=0 is the default option, and
     6526       only the segment of the top of the component is shown.
     6527       n=1  makes the result to shown all the segments.
    65916528NOTE:  grobcov is called internally.
    65926529KEYWORDS: geometrical locus; locus; envelop; associated tangent
     
    66146551  {
    66156552    if(DD[2*i-1]=="vmov"){vmov=DD[2*i];}
    6616     if(DD[2*i-1]=="version"){version=DD[2*i];}
     6553//    if(DD[2*i-1]=="version"){version=DD[2*i];}
    66176554    if(DD[2*i-1]=="comment"){comment=DD[2*i];}
    66186555    if(DD[2*i-1]=="familyinfo"){familyinfo=DD[2*i];}
     
    66526589 //if(comment>0){"System S before grobcov ="; S;}
    66536590  def G=grobcov(S,DD);
    6654   //"T_G=";G;
    66556591  list GG;
    66566592  for(i=2;i<=size(G);i++)
     
    66596595  }
    66606596  G=GG;
    6661   //"T_G=";G;
    66626597  if(moreinfo>0){return(G);}
    66636598  else
     
    67116646}
    67126647
    6713 proc FamElemsAtEnvCompPoints(poly F,ideal C, ideal E)
     6648proc FamElemsAtEnvCompPoints(poly F,ideal C, ideal E,list #)
    67146649"USAGE: FamElemsAtEnvCompPoints(poly F,ideal C,ideal E);
    67156650       poly F must be the family of hyper-surfaces whose
     
    67406675       The segment is the component and is given in Prep.
    67416676       Fixing the values of (x_1,..,x_n) inside E, the basis
    6742        allows to determine the values of the parameters
     6677       allows to detemine the values of the parameters
    67436678       (u_1,..u_m), of the hyper-surfaces passing at a point
    67446679       of E. See the book
    67456680       A. Montes. \"The Groebner Cover\" (Discussing
    67466681       Parametric Polynomial Systems).
     6682OPTIONS: \"moreinfo\",n  n=0 is the default option, and
     6683       only the segment of the top of the component is shown.
     6684       n=1  makes the result to shown all the segments.
    67476685NOTE: grobcov is called internally.
    67486686       The basering R, must be of the form Q[a][x]
     
    67536691  int i;
    67546692  int moreinfo=0;
     6693  list DD=#;
     6694  for(i=1;i<=(size(DD) div 2);i++)
     6695  {
     6696    if(DD[2*i-1]=="vmov"){vmov=DD[2*i];}
     6697//    if(DD[2*i-1]=="version"){version=DD[2*i];}
     6698    if(DD[2*i-1]=="comment"){comment=DD[2*i];}
     6699    if(DD[2*i-1]=="familyinfo"){familyinfo=DD[2*i];}
     6700    if(DD[2*i-1]=="moreinfo"){moreinfo=DD[2*i];}
     6701  };
    67556702  ideal S=C;
    67566703  ideal EE=E;
     
    71817128    }
    71827129     // B=reduced basis on CR
    7183      //"T_PR="; PR;
    7184      //"T_CR="; CR;
    7185      //"T_B="; B;
    71867130    if(rep==1){return(list(lcc,B,CR));}
    71877131    else{return(list(lcc,B,PR));}
     
    72847228    {
    72857229      G[size(G)+1]=G0;
    7286       //"T_G0="; G0;
    72877230      N=G0[3][1][2];
    7288       //"T_N="; N;
    72897231      for(i=1;i<=size(N);i++)
    72907232      {
     
    72947236          Epend[size(Epend)+1]=N[i];
    72957237        }
    7296         //"T_i="; i;
    7297       }
    7298       //"T_Etot="; Etot;
    7299       //"T_Epend=";Epend;
     7238      }
    73007239    }
    73017240  }
     
    73737312  int i; int j;
    73747313  ideal J=idminusid(E,N);
    7375   //"T_J="; J;
    73767314  for(i=1;i<=size(F);i++)
    73777315  {
     
    75257463  setring(RP);
    75267464  def SP=imap(RR,S);
    7527   //"T_SP="; SP;
    7528   //"T_typeof(SP[1])="; typeof(SP[1]);
    75297465  ideal EP;
    75307466  EP=SP[1];
     
    76787614    int r=m div 2;
    76797615    if(m mod 2==0){r=r-1;}
    7680     //"L0="; L0;
    7681      for(i=1;i<=r;i++)
     7616    for(i=1;i<=r;i++)
    76827617    {
    76837618      G1=grobcov(F,"null",L0[2*i],"nonnull",L0[2*i+1],"rep",1);
     
    77757710ADGT(H,T,H1,T1);
    77767711
    7777 // Now using diference of constructible sets for negative hypothesis and thesis
     7712// Now using difference of constructible sets for negative hypothesis and thesis
    77787713
    77797714ADGT(H,T,H1,T1,"neg",1);
     
    77907725// Vertices of the triangle: A(-2,0), B(2,0), C(2a,2b)
    77917726
    7792 // Height foot: A1(x1,y1),
    7793 // Height foot: B1(x2,y2),
    7794 // Height foot: C1(2a,0)
     7727// Heigth foot: A1(x1,y1),
     7728// Heigth foot: B1(x2,y2),
     7729// Heigth foot: C1(2a,0)
    77957730
    77967731// Middle point BC:  A2(a+1,b)
     
    78627797    list G2=grobcov(F,"rep",1);
    78637798    def L2=Grob1Levels(G2);
    7864     //"L2="; L2;
    78657799    ideal FN=T1;
    78667800    if(not(equalideals(H1,ideal(1))))
     
    78777811      list G3=grobcov(F,"rep",1);
    78787812      def L3=Grob1Levels(G3);
    7879       //"L3="; L3;
    78807813    }
    78817814    def LL=DifConsLCSets(L2,L3);
    7882     //"LL="; LL;
    78837815    LL=ConsLevels(LL);
    78847816    LL=Levels(LL);
    7885      //"LL="; LL;
    78867817    if(rep==1){return(LL);}
    78877818    else
Note: See TracChangeset for help on using the changeset viewer.