Changeset fac3ec in git
- Timestamp:
- Jun 3, 2020, 4:05:24 PM (3 years ago)
- Branches:
- (u'spielwiese', '91e5db82acc17434e4062bcfa44e6efa7d41fd30')
- Children:
- c2b991812d200ff53e5b84053d8ed56c0e2c51a0
- Parents:
- 6f25ae1c3ecfd4dbc7f6815716b2cb7ab4644d9d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/grobcov.lib
r6f25ae rfac3ec 1 1 ////////////////////////////////////////////////////////////////////////////// 2 version="version grobcov.lib 4.1. 2. January_2020 "; // $Id$;3 // version N 9; January2020;2 version="version grobcov.lib 4.1.3 January_2020 "; // $Id$ 3 // version N10; June 2020; 4 4 info=" 5 5 LIBRARY: grobcov.lib … … 120 120 hypothesis and thesis in ADGT. 121 121 122 This version was finished on 1/2/2020,122 This version was finished on 26/5/2020, 123 123 124 124 … … 247 247 determines a CGS in full-representation using WLemma 248 248 249 intersectpar(L); Auxiliary routine. Given a list of ideals define d on K[a][x]249 intersectpar(L); Auxiliary routine. Given a list of ideals definend on K[a][x] 250 250 it determines the intersection of all of them in K[x,a] 251 251 … … 321 321 // Release N9: December 2019. New routine DifConsLCSets, 322 322 // Updated also ADGT to use as option DifConsLCSets 323 // Release N10: May 2020. 324 // Updated locus. New determination of the taxonomies 323 325 324 326 //*************Auxiliary routines************** … … 964 966 mu=mu*nu; 965 967 rho=qlc[1]*qlm; 966 //"T_nu="; nu; "mu="; mu; "rho="; rho;967 968 p=nu*p-rho*F[i]; 968 969 r=nu*r; 969 970 for (j=1;j<=size(F);j++){q[j]=nu*q[j];} 970 971 q[i]=q[i]+rho; 971 //"T_q[i]="; q[i];972 972 divoc=1; 973 973 } … … 979 979 p=p-lcp*lpp; 980 980 } 981 //"T_r="; r; "p="; p;982 981 } 983 982 list res=r,q,mu; … … 1657 1656 } 1658 1657 } 1659 //"T_before="; prep;1660 1658 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;1664 1659 return(prep); 1665 1660 } … … 1739 1734 { 1740 1735 option(returnSB); 1741 //"T_Lp[i]="; Lp[i];1742 1736 N=Lp[i][1]; 1743 1737 Lb=Lp[i][2]; 1744 //"T_Lb="; Lb;1745 1738 ida=intersect(ida,N); 1746 1739 for(j=1;j<=size(Lb);j++) … … 1954 1947 def BH=imap(RR,B2); 1955 1948 def LH=imap(RR,LL); 1956 //"T_BH="; BH;1957 //"T_LH="; LH;1958 1949 for (i=1;i<=size(BH);i++) 1959 1950 { … … 1967 1958 def RPH=DH+PH; 1968 1959 def GSH=KSW(BH,LH); 1969 //"T_GSH="; GSH;1970 1960 //setglobalrings(); 1971 1961 // DEHOMOGENIZING THE RESULT … … 2101 2091 P[i]=L[Q[i][1]][Q[i][2]]; 2102 2092 } 2103 //"T_P="; P;2104 2093 // P is the list of the maximal components of the union 2105 2094 // with the corresponding initial holes. … … 2139 2128 int i; int j; int k; list H; list C; list T; 2140 2129 list L0; list P0; list P; list Q0; list Q; 2141 //"T_L="; L;2142 2130 for (i=1;i<=size(L);i++) 2143 2131 { … … 2148 2136 } 2149 2137 } 2150 //"T_P0="; P0;2151 2138 Q0=selectminideals(P0); 2152 //"T_Q0="; Q0;2153 2139 for (i=1;i<=size(Q0);i++) 2154 2140 { … … 2156 2142 P[i]=L[Q0[i][1]];// [Q[i][2]]; 2157 2143 } 2158 //"T_P="; P;2159 2144 // P is the list of the maximal components of the union 2160 2145 // with the corresponding initial holes. … … 2264 2249 static proc addpartfine(list H, list C0) 2265 2250 { 2266 //"T_H="; H;2267 2251 int i; int j; int k; int te; intvec notQ; int l; list sel; 2268 2252 intvec jtesC; … … 2351 2335 static proc needcombine(list LCU,ideal N) 2352 2336 { 2353 //"Deciding if combine is needed";;2354 2337 ideal BB; 2355 2338 int tes=0; int m=1; int j; int k; poly sp; … … 2526 2509 LCU[k][1]=B; 2527 2510 } 2528 //"Deciding if combine is needed";2529 2511 crep=PtoCrep(prep); 2530 2512 if(size(LCU)>1){tes=1;} … … 3261 3243 } 3262 3244 combpolys=reform(combpolys,numdens); 3263 //"T_combpolys="; combpolys;3264 3245 //setring(RR); 3265 3246 //def combpolysT=imap(P,combpolys); … … 3975 3956 { 3976 3957 CG=KSWtocgsdr(CG); 3977 //"T_CG="; CG;3978 3958 if( size(CG)>0) 3979 3959 { … … 4369 4349 { 4370 4350 t=T[i]; 4371 //"T_t"; t;4372 4351 P=0; Q=1; 4373 4352 for(j=1;j<=n;j++) … … 4383 4362 } 4384 4363 Cb=Crep0(P,Q); 4385 //"T_Cb="; Cb;4386 4364 if(size(Cb)!=0) 4387 4365 { … … 4472 4450 { 4473 4451 K=FirstLevel(B); 4474 //"T_K="; K;4475 4452 L[size(L)+1]=K[1]; 4476 4453 B=K[2]; … … 4593 4570 if (size(B) mod 2==1){B[size(B)+1]=ideal(1);} 4594 4571 if (size(A) mod 2==1){A[size(A)+1]=ideal(1);} 4595 //"T_A=";A;4596 // "T_B="; B;4597 4572 n=size(A) div 2; 4598 4573 m=(size(B) div 2)-1; … … 4613 4588 //string("T_j=",j); 4614 4589 ABdw=intersectpar(list(A[2*i],B[2*j+1])); 4615 //"T_ABdw="; ABdw;4616 4590 ABup=A[2*i-1]; 4617 //"T_ABup1="; ABup;4618 4591 if(j>0) 4619 4592 { … … 4623 4596 } 4624 4597 } 4625 //"T_ABup2="; ABup;4626 4598 ABupC=Crep(ABup,ideal(1)); 4627 //"T_ABupC="; ABupC;4628 4599 ABup=ABupC[1]; 4629 //"T_ABup="; ABup;4630 4600 if(ABup==1){t=0;} 4631 4601 //if(equalideals(ABup,ideal(1))){t=0;} … … 4633 4603 { 4634 4604 M=Crep(ABup,ABdw); 4635 //"T_M="; M;4636 4605 //if(not(equalideals(M[1],ideal(1)))) {L[size(L)+1]=M;} 4637 4606 if(not(size(M)==0)) {L[size(L)+1]=M;} 4638 4607 } 4639 //"L="; L;4640 4608 j++; 4641 4609 } … … 4751 4719 attrib(NP,"IsSB",1); 4752 4720 int d=dim(std(NP)); 4753 //"T_d="; d;4754 4721 if(d==0){te=0;} 4755 4722 setring(RR); … … 4774 4741 } 4775 4742 4776 // Dim Par4743 // DimComp 4777 4744 // Auxiliary routine to locus2 determining the dimension of a parametric ideal 4778 4745 // it is identical to DimPar but adds information about the character of the component … … 4855 4822 // independent of parameters giving the variables with dimension 0 4856 4823 dd=indepparameters(B); 4857 //"T_dd="; dd;4858 4824 if (dd==1){d=0; L0=d,string(B);} // ,determineF(B,F,E) 4859 4825 else{d=1; L0=2,"Normal";} … … 4862 4828 { 4863 4829 def RH=ringlist(RR); 4864 //"T_RH="; RH;4865 4830 def H=RH; 4866 4831 H[1]=0; … … 4925 4890 } 4926 4891 } 4927 //"T_L0="; L0;4928 4892 return(L0); 4929 4893 } … … 4947 4911 def RRH=ring(H); 4948 4912 4949 //" ";string("Anti-image of Special component = ", GGG);4950 4913 4951 4914 setring(RRH); … … 4956 4919 ideal M=std(AA+FH); 4957 4920 def rh=reduce(EH,M,5); 4958 //"T_AA="; AA; "T_FH="; FH; "T_EH="; EH; "T_rh="; rh;4959 4921 if(rh==0){env=1;} else{env=0;} 4960 4922 setring RR; 4961 4923 //L0[3]=env; 4962 //"T_env="; env;4963 4924 return(env); 4964 4925 } … … 5005 4966 def D=ring(RX); 5006 4967 def RP=D+P; 5007 //"T_locus0 ha estat cridat";5008 4968 // if(defined(@P)==1){te=1; kill @P; kill @R; kill @RP; } 5009 4969 // setglobalrings(); … … 5099 5059 } //In P1 factors in the basis independent of the parameters have been obtained 5100 5060 ideal BB; int dd; list NS; 5061 // "T_AQUI_3"; 5101 5062 for(i=1;i<=size(P1);i++) 5102 5063 { 5103 //"T_P1="; P1;5104 5064 NS=NorSing(P1[i][3],P1[i][1],P1[i][2][1],DD); 5105 //"T_NS="; NS;5106 5065 dd=NS[1]; 5107 5066 if(dd==0){P1[i][3]=NS;} //"Special"; //dd==0 … … 5212 5171 // If all levels of a class of locus are 1, then the set is locally closed. Otherwise the level 5213 5172 // gives the depth of the component. 5173 // static proc locus2(list G, ideal F, list #) 5214 5174 static proc locus2(list G, ideal F, list #) 5215 5175 { 5216 5176 int st=timer; 5217 5177 list Snor; list Snonor; 5218 int d; int i; int j; 5178 int d; int i; int j; int mt=0; 5219 5179 def RR=basering; 5220 5180 def Rx=ringlist(RR); … … 5224 5184 list GG=G; 5225 5185 int n=size(Rx[1][2]); 5226 int moverdim ;5186 int moverdim=n; 5227 5187 for(i=1;i<=(size(DD) div 2);i++) 5228 5188 { 5229 if(DD[2*i-1]=="moverdim"){moverdim=DD[2*i]; }5189 if(DD[2*i-1]=="moverdim"){moverdim=DD[2*i]; mt=1; } 5230 5190 if(DD[2*i-1]=="vmov"){vmov=DD[2*i];} 5231 5191 // if(DD[2*i-1]=="vmov"){vmov=DD[2*i];} … … 5233 5193 // if(DD[2*i-1]=="comment"){comment=DD[2*i];} 5234 5194 // 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;} 5237 5198 for(i=1;i<=size(GG);i++) 5238 5199 { … … 5258 5219 } 5259 5220 } 5260 //"T_Snor="; Snor;5261 //"T_Snonor="; Snonor;5262 5221 int tnor=size(Snor); int tnonor=size(Snonor); 5263 5222 setring RP; … … 5275 5234 SnonorP=LCUnionN(SnonorP); 5276 5235 } 5277 //"T_SnorP after LCUnion="; SnorP;5278 // "T_SnonorP after LCUnion="; SnonorP;5279 5236 setring RR; 5280 5237 ideal C; list N; list BAC; list AI; … … 5296 5253 N=Snor[i][2]; 5297 5254 dimP=DimPar(C); 5298 //"T_G="; G;5299 5255 AI=NS(F,G,C,N,DD); 5300 //"T_AI="; AI;5301 5256 AI0=AI[2]; 5302 5257 if(size(AI)==3){AI[2]="normal"; AI[3]=ideal(0);} 5303 5258 else 5304 5259 { 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 { 5313 5267 if(AI[1]<n-1){AI[2]="Special"; AI[3]=AI0;} 5314 5268 } 5315 5269 } 5316 5270 Snor[i][size(Snor[i])+1]=AI; … … 5325 5279 { 5326 5280 Snonor=imap(RP,SnonorP); 5327 //"T_Snonor="; Snonor;5328 //"T_G="; G;5329 5281 for(i=1;i<=size(Snonor);i++) 5330 5282 { 5331 5283 DAC=dimComp(Snonor[i][1]); 5332 5284 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 NONOR5338 }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 // } 5339 5291 } 5340 5292 for(i=1;i<=size(Snonor);i++) … … 5385 5337 int n=size(Rx[1][2]); // number of parameters 5386 5338 def nv=nvars(RR); // number of variables 5387 int moverdim=n v;// number of mover variables5339 int moverdim=n; // number of mover variables 5388 5340 ideal vmov; // mover variables (bw) 5389 5341 for(i=1;i<=(size(DD) div 2);i++) … … 5404 5356 } 5405 5357 //string("T_nv=",nv," moverdim=",moverdim); 5406 // "T_aixo es nou";5407 5358 // for(i=1;i<=nv;i++) 5408 5359 // { … … 5414 5365 ideal bu; // ideal of all variables (u) 5415 5366 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);} 5418 5372 5419 5373 // Searching the basis associated to C … … 5431 5385 if(te==1){"ERROR";} 5432 5386 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];5435 5387 5436 5388 // Searching the elements in Q[v_m] on basis different from B that are nul there … … 5614 5566 int n=size(Rx[1][2]); // number of parameters 5615 5567 def nv=nvars(RR); // number of variables 5616 int moverdim=n v; // number of mover variables5568 int moverdim=n; // number of parameters 5617 5569 ideal vmov; // mover variables (bw) 5618 5570 … … 5635 5587 ideal bu; // ideal of all variables (u) 5636 5588 for(i=1;i<=nv;i++){bu[i]=var(i);} 5637 ideal mv; // ideal of mover vari ables5589 ideal mv; // ideal of mover varibles 5638 5590 for(i=1;i<=nv;i++){mv[size(mv)+1]=var(i);} 5639 5591 … … 5652 5604 if(te==1){"ERROR";} 5653 5605 def B=G[j0][2]; 5654 //"T_B=G[j0][2]="; B;5655 //string("T_k0=",k0," G[",j0,"]="); G[j0];5656 5606 return(B); 5657 5607 } … … 5718 5668 if(te==1){"ERROR";} 5719 5669 def B=G[j0][2]; // basis associated to C 5720 //"T_B="; B;5721 5670 5722 5671 // Searching the elements in Q[vmov] on bases different from B that are nul there … … 5776 5725 poly kkk=1; 5777 5726 if(size(NN)==0){NN[1]=kkk;} 5778 //"T_NN="; NN;5779 5727 5780 5728 // Union of F and B … … 5783 5731 B[size(B)+1]=F[i]; 5784 5732 } 5785 //"T_B+F="; B;5786 5733 5787 5734 // Reducing basis B modulo C in the ring PR … … 5797 5744 BBR[i]=reduce(BB[i],CC); 5798 5745 } 5799 //"T_BBR="; BBR;5800 5746 5801 5747 // Selecting the elements of the ideal in Q[v] … … 5810 5756 if(subset(variables(BBR[i]),vv)){BR[size(BR)+1]=BBR[i];} 5811 5757 } 5812 //"T_BR="; BR;5813 5758 // setring PR; 5814 5759 // def BR=imap(RP,BRv); … … 5836 5781 } 5837 5782 } 5838 //"T_BP="; BP;5839 5783 5840 5784 // Obtaining Am, the anti-image of C on vmov … … 5847 5791 if (subset(variables(A[i]),vm)){Am[size(Am)+1]=A[i];} 5848 5792 } 5849 //"T_Am="; Am;5850 5851 5793 5852 5794 list AIM=dimM(Am,nv,nm); … … 5871 5813 Rx[3][1][2]=iv; 5872 5814 def DM=ring(Rx); 5873 //"Rx="; Rx;5874 5815 setring(DM); 5875 5816 ideal KKMD=imap(RR,KKM); … … 5917 5858 ideal vpar; 5918 5859 ideal vvar; 5919 //"T_n="; n;5920 //"T_nv="; nv;5921 5860 for(i=1;i<=n;i++){vpar[size(vpar)+1]=par(i);} 5922 5861 for(i=1;i<=nv;i++){vvar[size(vvar)+1]=var(i);} 5923 //string("T_vpar = ", vpar," vvar = ",vvar);5924 5862 def P=ring(Rx[1]); 5925 5863 Rx[1]=0; … … 5932 5870 //string("T_vvpar = ",vvpar); 5933 5871 ideal B=std(FF); 5934 //"T_B="; B;5935 5872 ideal Bel; 5936 //"T_vvpar="; vvpar;5937 5873 for(i=1;i<=size(B);i++) 5938 5874 { 5939 5875 if(subset(variables(B[i]),vvpar)) {Bel[size(Bel)+1]=B[i];} 5940 5876 } 5941 //"T_Bel="; Bel;5942 5877 list H; 5943 5878 list FH; … … 5976 5911 // The third element tax is: 5977 5912 // for normal point components, tax=(d,taxonomy,anti-image) 5978 // being d=dimension of the anti-image on the mover var iables,5913 // being d=dimension of the anti-image on the mover varaibles, 5979 5914 // taxonomy='Normal' or 'Special', and 5980 5915 // anti-image=ideal of the anti-image over the mover variables … … 6012 5947 in Q[x1,..,xn][u1,..,um], 6013 5948 (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. 6019 5955 OPTIONS: An option is a pair of arguments: string, integer. 6020 5956 To modify the default options, pairs of arguments … … 6025 5961 \"moverdim\", k to restrict the mover-variables of the 6026 5962 anti-image to the last k variables. 6027 By defaul t k is equal to the number ofu-variables,6028 The restriction to a smaller value6029 can produce an error in the character5963 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 6030 5966 \"Normal\" or \"Special\" of a locus component. 6031 5967 6032 \"grobcov\", list of theprevious computed grobcov(F).5968 \"grobcov\", L, where L is the list of a previous computed grobcov(F). 6033 5969 It is to be used when we modify externally the grobcov, 6034 5970 for example to obtain the real grobcov. 6035 6036 \"anti-image\",0 if the anti-image is not to be6037 shown for \"Normal\" components.6038 5971 6039 5972 \"comments\", c: by default it is 0, but it can be set 6040 5973 to 1. 6041 5974 RETURN: 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) 6043 5976 Elements 1 and 2 of a component represent the 6044 5977 P-canonical form of the component. … … 6105 6038 ideal vmov; 6106 6039 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;} 6109 6043 // for(i=1;i<=nv;i++){vmov[size(vmov)+1]=var(i);} 6110 6044 int version=2; … … 6117 6051 if(DD[2*i-1]=="moverdim"){moverdim=DD[2*i];} 6118 6052 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];} 6120 6054 if(DD[2*i-1]=="comment"){comment=DD[2*i];} 6121 6055 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;} 6124 6058 for(i=1;i<=moverdim;i++){vmov[size(vmov)+1]=var(i+nv-moverdim);} 6125 6059 if(size(GG)==0){GG=grobcov(F);} 6126 //"T_GG=grobcov(F)="; GG;6127 6060 int j; int k; int te; 6128 6061 def B0=GG[1][2]; … … 6130 6063 list nGP; 6131 6064 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 // } 6136 6069 else 6137 6070 { 6138 n=nvars(R );6071 n=nvars(RR); 6139 6072 ideal vB; 6140 6073 ideal N; … … 6195 6128 if(version==2) 6196 6129 { 6197 //"T_nGP="; nGP;6198 6130 def LL=locus2(nGP,F,DD); 6199 6131 } … … 6402 6334 ideal C=g_1(u_1,..u_m),..,g_s(u_1,..u_m); 6403 6335 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. 6404 6339 RETURN: The output is a list of the components [C_1, .. , C_n] 6405 6340 of the locus. Each component is given by … … 6421 6356 To modify the default options, 6422 6357 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: 6425 6361 \"comments\", c: by default it is 0, but it can be set to 1. 6426 6362 \"anti-image\", a: by default a=1 and the anti-image is 6427 6363 shown also for \"Normal\" components. 6428 6364 For a=0, it is not shown. 6365 \"moverdim\", k: by default it is equal to n, the number of 6366 x-tracer variables. 6429 6367 NOTE: grobcov and locus are called internally. 6430 6368 The basering R, must be of the form Q[x][u] … … 6472 6410 int ng=size(C); 6473 6411 ideal S=F; 6474 //"T_C="; C;6475 6412 for(i=1;i<=size(C);i++){S[size(S)+1]=C[i];} 6476 //"T_S="; S;6477 6413 int s=nv-ng; 6478 6414 if(s>0) … … 6480 6416 matrix M[ng+1][ng+1]; 6481 6417 def cc=comb(nv,ng+1); 6482 //string("nv=",nv," ng=",ng," s=",s);6483 //"T_cc="; cc;6484 6418 poly J; 6485 6419 for(k=1;k<=size(cc);k++) … … 6589 6523 See book 6590 6524 A. Montes. \"The Groebner Cover\": 6525 OPTIONS: \"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. 6591 6528 NOTE: grobcov is called internally. 6592 6529 KEYWORDS: geometrical locus; locus; envelop; associated tangent … … 6614 6551 { 6615 6552 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];} 6617 6554 if(DD[2*i-1]=="comment"){comment=DD[2*i];} 6618 6555 if(DD[2*i-1]=="familyinfo"){familyinfo=DD[2*i];} … … 6652 6589 //if(comment>0){"System S before grobcov ="; S;} 6653 6590 def G=grobcov(S,DD); 6654 //"T_G=";G;6655 6591 list GG; 6656 6592 for(i=2;i<=size(G);i++) … … 6659 6595 } 6660 6596 G=GG; 6661 //"T_G=";G;6662 6597 if(moreinfo>0){return(G);} 6663 6598 else … … 6711 6646 } 6712 6647 6713 proc FamElemsAtEnvCompPoints(poly F,ideal C, ideal E )6648 proc FamElemsAtEnvCompPoints(poly F,ideal C, ideal E,list #) 6714 6649 "USAGE: FamElemsAtEnvCompPoints(poly F,ideal C,ideal E); 6715 6650 poly F must be the family of hyper-surfaces whose … … 6740 6675 The segment is the component and is given in Prep. 6741 6676 Fixing the values of (x_1,..,x_n) inside E, the basis 6742 allows to dete rmine the values of the parameters6677 allows to detemine the values of the parameters 6743 6678 (u_1,..u_m), of the hyper-surfaces passing at a point 6744 6679 of E. See the book 6745 6680 A. Montes. \"The Groebner Cover\" (Discussing 6746 6681 Parametric Polynomial Systems). 6682 OPTIONS: \"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. 6747 6685 NOTE: grobcov is called internally. 6748 6686 The basering R, must be of the form Q[a][x] … … 6753 6691 int i; 6754 6692 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 }; 6755 6702 ideal S=C; 6756 6703 ideal EE=E; … … 7181 7128 } 7182 7129 // B=reduced basis on CR 7183 //"T_PR="; PR;7184 //"T_CR="; CR;7185 //"T_B="; B;7186 7130 if(rep==1){return(list(lcc,B,CR));} 7187 7131 else{return(list(lcc,B,PR));} … … 7284 7228 { 7285 7229 G[size(G)+1]=G0; 7286 //"T_G0="; G0;7287 7230 N=G0[3][1][2]; 7288 //"T_N="; N;7289 7231 for(i=1;i<=size(N);i++) 7290 7232 { … … 7294 7236 Epend[size(Epend)+1]=N[i]; 7295 7237 } 7296 //"T_i="; i; 7297 } 7298 //"T_Etot="; Etot; 7299 //"T_Epend=";Epend; 7238 } 7300 7239 } 7301 7240 } … … 7373 7312 int i; int j; 7374 7313 ideal J=idminusid(E,N); 7375 //"T_J="; J;7376 7314 for(i=1;i<=size(F);i++) 7377 7315 { … … 7525 7463 setring(RP); 7526 7464 def SP=imap(RR,S); 7527 //"T_SP="; SP;7528 //"T_typeof(SP[1])="; typeof(SP[1]);7529 7465 ideal EP; 7530 7466 EP=SP[1]; … … 7678 7614 int r=m div 2; 7679 7615 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++) 7682 7617 { 7683 7618 G1=grobcov(F,"null",L0[2*i],"nonnull",L0[2*i+1],"rep",1); … … 7775 7710 ADGT(H,T,H1,T1); 7776 7711 7777 // Now using dif erence of constructible sets for negative hypothesis and thesis7712 // Now using difference of constructible sets for negative hypothesis and thesis 7778 7713 7779 7714 ADGT(H,T,H1,T1,"neg",1); … … 7790 7725 // Vertices of the triangle: A(-2,0), B(2,0), C(2a,2b) 7791 7726 7792 // Heig htfoot: A1(x1,y1),7793 // Heig htfoot: B1(x2,y2),7794 // Heig htfoot: C1(2a,0)7727 // Heigth foot: A1(x1,y1), 7728 // Heigth foot: B1(x2,y2), 7729 // Heigth foot: C1(2a,0) 7795 7730 7796 7731 // Middle point BC: A2(a+1,b) … … 7862 7797 list G2=grobcov(F,"rep",1); 7863 7798 def L2=Grob1Levels(G2); 7864 //"L2="; L2;7865 7799 ideal FN=T1; 7866 7800 if(not(equalideals(H1,ideal(1)))) … … 7877 7811 list G3=grobcov(F,"rep",1); 7878 7812 def L3=Grob1Levels(G3); 7879 //"L3="; L3;7880 7813 } 7881 7814 def LL=DifConsLCSets(L2,L3); 7882 //"LL="; LL;7883 7815 LL=ConsLevels(LL); 7884 7816 LL=Levels(LL); 7885 //"LL="; LL;7886 7817 if(rep==1){return(LL);} 7887 7818 else
Note: See TracChangeset
for help on using the changeset viewer.