51 for(i=0;i<vec.size();i++)
53 Print(
" _[%d]=%d\n",i+1,vec[i]);
68 for(i=0;i<posMat.size();i++)
102 for(
int i=0;
i<pv.size();
i++)
119 for(
int i=0;
i<pvs.size();
i++)
149 for(i=0;i<vec.size();i++)
168 std::vector<int> inte;
169 for(i=0;i<p.size();i++)
172 inte.push_back(p[i]);
187 bool vEv(std::vector<int> vec1,std::vector<int> vec2)
189 int i,
j, lg1=vec1.size(),lg2=vec2.size();
196 for(j=0;j<vec1.size();j++)
209 bool vsubset(std::vector<int> vec1, std::vector<int> vec2)
212 if(vec1.size()>vec2.size())
214 for(i=0;i<vec1.size();i++)
216 if(!
IsinL(vec1[i],vec2))
223 bool vEvl(std::vector<int> vec1, std::vector<int> vec2)
225 if(vec1.size()==0 && vec2.size()==0)
236 bool vInvsl(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
239 for(i=0;i<vecs.size();i++)
241 if(
vEvl(vec,vecs[i]))
254 int vInvs(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
257 for(i=0;i<vecs.size();i++)
270 std::vector<int>
vecUnion(std::vector<int> vec1, std::vector<int> vec2)
272 std::vector<int>
vec=vec1;
274 for(i=0;i<vec2.size();i++)
276 if(!
IsinL(vec2[i],vec))
277 vec.push_back(vec2[i]);
284 std::vector<int>
vecMinus(std::vector<int> vec1,std::vector<int> vec2)
286 std::vector<int>
vec;
287 for(
int i=0;
i<vec1.size();
i++)
291 vec.push_back(vec1[i]);
302 std::vector<std::vector<int> >
vsMinusv(std::vector<std::vector<int> > vecs, std::vector<int>
vec)
305 std::vector<std::vector<int> >
rem;
306 for(i=0;i<vecs.size();i++)
308 if(!
vEvl(vecs[i],vec))
310 rem.push_back(vecs[i]);
317 std::vector<std::vector<int> >
vsUnion(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
320 std::vector<std::vector<int> > vs=vs1;
321 for(i=0;i<vs2.size();i++)
325 vs.push_back(vs2[i]);
336 std::vector<std::vector<int> >
vsIntersection(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
339 std::vector<std::vector<int> > vs;
340 for(i=0;i<vs2.size();i++)
344 vs.push_back(vs2[i]);
361 std::vector<int> supset;
362 if(p==0)
return supset;
381 std::vector<std::vector<int> > vecs;
382 std::vector<int>
vec;
403 std::vector<int> supset;
425 std::vector<std::vector<int> > vecs;
426 std::vector<int>
vec;
441 int n=vbase.size(); poly
p,q=0;
458 ideal
idMake(std::vector<std::vector<int> > vecs)
460 int lv=vecs.size(),
i,
j;
529 std::vector<int> vbase;
534 vbase.push_back(
pcoef(p,i));
546 std::vector<std::vector<int> >
vsMake(ideal
h)
548 std::vector<int>
vec;
549 std::vector<std::vector<int> > vecs;
562 std::vector<std::vector<int> >
vecqring(std::vector<std::vector<int> > vec1, std::vector<std::vector<int> > vec2)
567 std::vector<std::vector<int> > vecs=
vsMake(h);
590 ideal
idMaken(std::vector<std::vector<int> > vecs)
594 int i,lv=vecs.size();
614 std::vector<std::vector<int> > vecs;
615 for(i=0;i<vec.size();i++)
617 bv.push_back(vec[i]);
622 for(i=0;i<vecs.size();i++)
624 for(j=i+1;j<vecs.size();j++)
813 ideal asfmons,sfmons,mons,
p;
947 ideal h1,mons,id_re=
idInit(1,1);
997 ideal id_re, id_so=
idCopy(h);
1003 id_so=
idadda(id_so, id_re);
1025 ideal h2=
idAdd(h,h1);
1117 std::vector<std::vector<int> > hvs=
supports(h);
1123 if(
vInvsl(v,hvs)&&in.size()==0)
1144 bool mabconditionv(std::vector<std::vector<int> > hvs,std::vector<int> pv,std::vector<int> av,std::vector<int> bv)
1146 std::vector<int> uv=
vecUnion(pv,av);
1157 std::vector<std::vector<int> >
Mabv(ideal
h,poly a,poly
b)
1162 for(
int i=0;
i<h2v.size();
i++)
1190 std::vector<int>
eli1(std::vector<int> eq1,std::vector<int> eq2)
1193 std::vector<int> eq;
1235 std::vector<int> yaya;
1247 std::vector<std::vector<int> >
soleli1( std::vector<std::vector<int> > eqs)
1250 std::vector<int> yaya;
1251 std::vector<std::vector<int> > pre=eqs, ppre, re;
1254 re.push_back(eqs[0]);
1255 pre.erase(pre.begin());
1260 for(i=1;i<re.size();i++)
1264 yaya=
eli1(re[i],yaya);
1272 pre.erase(pre.begin());
1282 std::vector<int>
freevars(
int n, std::vector<int> bset, std::vector<std::vector<int> > gset)
1284 int ql=gset.size(), bl=bset.size(),
i;
1285 std::vector<int>
mvar, fvar;
1288 mvar.push_back(bset[
i]);
1292 mvar.push_back(gset[
i][0]);
1309 std::vector<int> fset=fvars;
1310 for(i=0;i<fset.size();i++)
1314 fset.erase(fset.begin()+
i);
1325 std::vector<std::vector<int> >
vAbsorb( std::vector<int> bset,std::vector<std::vector<int> > gset)
1327 std::vector<int> badset=bset;
1328 int i,
j,
m, bl=bset.size(), gl=gset.size();
1334 if(gset[j][0]==m && !
IsinL(gset[j][1],badset))
1336 badset.push_back(gset[j][1]);
1337 gset.erase(gset.begin()+
j);
1342 else if(!
IsinL(gset[j][0],badset) && gset[
j][1]==
m)
1344 badset.push_back(gset[j][0]);
1345 gset.erase(gset.begin()+
j);
1350 else if(
IsinL(gset[j][0],badset) &&
IsinL(gset[j][1],badset))
1352 gset.erase(gset.begin()+
j);
1362 if(badset.size()==0) badset.push_back(0);
1363 gset.push_back(badset);
1377 std::vector<int>
base;
1395 std::vector<int>
vec;
1409 std::vector<int>
vec;
1422 std::vector<int>
ofindbases1(
int num,
int vnum, std::vector<int> bset,std::vector<std::vector<int> > gset)
1425 std::vector<std::vector<int> > goodset;
1426 std::vector<int> fvars=
freevars(num, bset, gset), oset,
base;
1427 std::vector<int> zset=
fvarsvalue(vnum, fvars);
1429 oset.push_back(vnum);
1431 oset=goodset[goodset.size()-1];
1432 goodset.erase(goodset.end());
1446 std::vector<std::vector<int> >
ofindbases(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1449 std::vector<std::vector<int> > bases;
1450 std::vector<int> fvars=
freevars(num, bset, gset), base1;
1451 if (fvars.size()==0)
1454 bases.push_back(base1);
1458 for(i=0;i<fvars.size();i++)
1462 bases.push_back(base1);
1480 std::vector<std::vector<int> >
eli2(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1483 std::vector<int> badset;
1484 std::vector<std::vector<int> > goodset,
solve;
1494 int m=goodset.size();
1495 badset=goodset[m-1];
1496 goodset.erase(goodset.end());
1529 std::vector<std::vector<int> >
links(poly a, ideal
h)
1532 std::vector<std::vector<int> > lk,X=
supports(h);
1533 std::vector<int> U,In,av=
support1(a);
1534 for(i=0;i<X.size();i++)
1538 if( In.size()==0 &&
vInvsl(U,X))
1580 std::vector<int> as;
1581 std::vector<std::vector<int> > hvs=
supports(h);
1647 std::vector<std::vector<int> >
id_subsets(std::vector<std::vector<int> > vecs)
1650 std::vector<std::vector<int> > vvs,
res;
1651 for(i=0;i<vecs.size();i++)
1655 for(j=0;j<vvs.size();j++)
1658 res.push_back(vvs[j]);
1668 std::vector<int>
vertset(std::vector<std::vector<int> > vecs)
1671 std::vector<int> vert;
1672 std::vector<std::vector<int> > vvs;
1675 for(j=0;j<vecs.size();j++)
1677 if(
IsinL(i, vecs[j]))
1679 if(!
IsinL(i , vert))
1693 std::vector<std::vector<int> > pbv,lk=
links(a,h),
res;
1694 std::vector<int> vert=
vertset(lk), bv;
1699 for(i=0;i<
res.size();i++)
1702 pbv.push_back(
res[i]);
1809 ideal h1,mons, id_re=
idInit(1,1);
1830 std::vector<std::vector<int> >
listsinsertlist(std::vector<std::vector<int> > gset,
int a,
int b)
1832 std::vector<int> eq;
1845 std::vector<int> equation;
1846 equation.push_back(i);
1847 equation.push_back(j);
1848 equation.push_back(t);
1862 int n=vbase.size(),co=1;
1864 for(
int i=0;
i<3;
i++)
1879 ideal
idMake3(std::vector<std::vector<int> > vecs)
1883 int i,lv=vecs.size();
1903 tt=(
char**)
omAlloc(num*
sizeof(
char *));
1904 for(i=0; i <
num; i++)
1907 sprintf (tt[i],
"t(%d)", i+1);
1919 std::vector<int>
subspace1(std::vector<std::vector<int> > mv, std::vector<int> bv)
1921 int i,
num=mv.size();
1922 std::vector<int>
base;
1925 if(
IsinL(bv[0],mv[i]))
1945 std::vector<poly>
pMakei(std::vector<std::vector<int> > mv,std::vector<int> vbase)
1948 std::vector<poly> h1;
1950 for(
int i=0;
i<n;
i++)
1961 std::vector<std::vector<poly> >
idMakei(std::vector<std::vector<int> > mv,std::vector<std::vector<int> > vecs)
1963 int i,lv=vecs.size();
1964 std::vector<std::vector<poly> > re;
1965 std::vector<poly>
h;
2032 std::vector<std::vector<int> > suu;
2035 std::vector<std::vector<int> > solves=
vecqring(solve,suu);
2043 PrintS(
"No element considered!\n");
2079 bool condition2for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> sv, std::vector<int> av, std::vector<int> bv)
2097 bool condition3for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
2099 std::vector<int> v1,v2,v3;
2134 WerrorS(
"presolve.lib are not loaded!");
2144 ideal re=(ideal)L->
m[4].
CopyD();
2158 std::vector<int> fvar;
2180 std::vector<std::vector<int> > vecs;
2181 std::vector<int>
vec;
2192 vecs.push_back(vec);
2204 std::vector<int>
vec;
2205 std::vector<std::vector<int> > vecs;
2212 std::vector<int> fvar=
numfree(h1);
2253 vecs.push_back(vec);
2276 std::vector<int>
findalpha(std::vector<std::vector<int> > mv, std::vector<int> bv)
2278 std::vector<int> alset;
2279 for(
int i=0;
i<mv.size();
i++)
2300 int i,
j, t, n=ntvs.size();
2301 std::vector<int> subase;
2308 subase.push_back(1);
2312 subase.push_back(-1);
2316 subase.push_back(0);
2328 std::vector<std::vector<int> >
subspacet(std::vector<std::vector<int> > mv, std::vector<int> bv,std::vector<std::vector<int> > ntvs)
2331 std::vector<int> alset=
findalpha(mv,bv), subase;
2332 std::vector<std::vector<int> > subases;
2333 for(i=0;i<alset.size();i++)
2336 subases.push_back(subase);
2347 std::vector<std::vector<int> >
mabtv(std::vector<std::vector<int> > hvs, std::vector<std::vector<int> > Mv, std::vector<int> av, std::vector<int> bv)
2349 std::vector<int> v1,var;
2350 std::vector<std::vector<int> > vars;
2351 for(
int i=0;
i<Mv.size();
i++)
2353 for(
int j=
i+1;
j<Mv.size();
j++)
2361 vars.push_back(var);
2375 int t0,t1,t2,
i,
j,t,
m;
2378 std::vector<std::vector<int> > hvs=
supports(h), mv=
Mabv(h,a,b), mts, vecs,vars;
2380 mts=
mabtv(hvs,mv,av,bv);
2381 PrintS(
"The homomorphism should map onto:\n");
2386 vars=
mabtv(hvs,mv,av,bv);
2388 for(t0=0;t0<vars.size();t0++)
2399 vecs.push_back(
vec);
2409 vecs.push_back(
vec);
2412 for(t1=t0+1;t1<vars.size();t1++)
2414 for(t2=t1+1;t2<vars.size();t2++)
2416 if(vars[t0][0]==vars[t1][0]&&vars[t1][1]==vars[t2][1]&&vars[t0][1]==vars[t2][0])
2424 vecs.push_back(
vec);
2436 std::vector<std::vector<int> > re=
getvector(id_re,vn);
2437 PrintS(
"this is the solution for ideal :\n");
2440 std::vector<std::vector<int> > sub=
subspacet(mv, bv,vars);
2441 PrintS(
"this is the solution for subspace:\n");
2445 PrintS(
"This is the solution of coefficients:\n");
2451 PrintS(
"No element considered!");
2487 bool nabconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2506 std::vector<std::vector<int> >
Nabv(std::vector<std::vector<int> > hvs, std::vector<int> av, std::vector<int> bv)
2508 std::vector<std::vector<int> > vecs;
2515 vecs.push_back(hvs[i]);
2528 bool nabtconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
2530 std::vector<int> v1;
2541 std::vector<std::vector<int> >
nabtv(std::vector<std::vector<int> > hvs, std::vector<std::vector<int> > Nv, std::vector<int> av, std::vector<int> bv)
2543 std::vector<int> v1,var;
2544 std::vector<std::vector<int> > vars;
2545 for(
int i=0;
i<Nv.size();
i++)
2547 for(
int j=
i+1;
j<Nv.size();
j++)
2554 vars.push_back(var);
2572 bool tNab(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<std::vector<int> > bvs)
2574 std::vector<int> sv;
2575 if(bvs.size()<=1)
return false;
2576 for(
int i=0;
i<bvs.size();
i++)
2593 std::vector<int>
tnab(std::vector<std::vector<int> > hvs,std::vector<std::vector<int> > nvs,std::vector<std::vector<int> > bvs)
2595 std::vector<int> pv,
vec;
2596 for(
int j=0;
j<nvs.size();
j++)
2599 if(
tNab(hvs, pv, bvs))
2615 std::vector<int>
phimage(std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2617 std::vector<int> qv=
vecUnion(pv,av);
2626 std::vector<std::vector<int> >
value1(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > nvs, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
2629 std::vector<int> pv,
base;
2630 std::vector<std::vector<int> > bases;
2631 for(
int t=0;t<vecs.size();t++)
2633 for(
int i=0;
i<mvs.size();
i++)
2636 for( j=0;j<nvs.size();j++)
2640 base.push_back(vecs[t][j]);
2649 if(base.size()!=mvs.size())
2652 WerrorS(
"Errors in Equations solving (Values Finding)!");
2658 bases.push_back(base);
2678 int i,
j, a=vecs.size();
2685 int b=vecs[0].size();
2713 std::vector<std::vector<int> > vecs=
supports(ids);
2729 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
2732 for(i=0;i<index.size();i++)
2745 std::vector<int>
vec,solm;
2746 std::vector<std::vector<int> > solsm;
2747 for(i=0;i<
solve.size();i++)
2750 for(j=0;j<vec.size();j++)
2753 solm.push_back(vec[j]);
2755 solsm.push_back(solm);
2769 std::vector<std::vector<int> > hvs=
supports(h),mv=
Mabv(h,a,b),sbv,nv,good,
solve;
2780 tnv=
tnab(hvs,nv,sbv);
2781 for(i=0;i<tnv.size();i++)
2784 bad.push_back(co+1);
2808 std::vector<int> su=
make1(n);
2809 std::vector<std::vector<int> > suu;
2817 solve=
value1(mv,nv,solve,av,bv);
2840 ideal bi=
findb(h),ai;
2844 std::vector<std::vector<int> >
solve;
2866 Print(
"Finished %d!\n",mm);
2875 bool condition2for2nv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> fv)
2893 std::vector<int>
findalphan(std::vector<std::vector<int> >
N, std::vector<int> tN)
2895 int i;std::vector<int> alset,
vec;
2896 for(i=0;i<
N.size();i++)
2912 std::vector<std::vector<int> >
subspacetn(std::vector<std::vector<int> >
N, std::vector<int> tN, std::vector<std::vector<int> > ntvs)
2916 std::vector<std::vector<int> > subases;
2917 for(i=0;i<alset.size();i++)
2920 subases.push_back(subase);
2933 std::vector<std::vector<int> >
value2(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > nvs, std::vector<std::vector<int> > mts, std::vector<std::vector<int> > nts, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
2936 std::vector<int> pv,qv,
base;
2937 std::vector<std::vector<int> > bases;
2944 for(
int t=0;t<vecs.size();t++)
2946 for(
int i=0;
i<mts.size();
i++)
2956 for(j=0;j<nts.size();j++)
2960 if(
vEvl(pv,nvs[row])&&
vEvl(qv,nvs[col]))
2962 base.push_back(vecs[t][j]);
break;
2964 else if(
vEvl(pv,nvs[col])&&
vEvl(qv,nvs[row]))
2966 base.push_back(-vecs[t][j]);
break;
2969 if(j==nts.size()) {base.push_back(0);}
2972 if(base.size()!=mts.size())
2974 WerrorS(
"Errors in Values Finding(value2)!");
2979 bases.push_back(base);
2991 std::vector<std::vector<int> > hvs=
supports(h),mv,mts;
2994 mts=
mabtv(hvs,mv,av,bv);
2995 std::vector<std::vector<poly> > pvs=
idMakei(mv,mts);
2997 for(i=0;i<pvs.size();i++)
3016 std::vector<std::vector<int> > hvs=
supports(h),nv,mv,mts,sbv,vecs,vars,ntvs,
solve;
3022 tnv=
tnab(hvs,nv,sbv);
3025 mts=
mabtv(hvs,mv,av,bv);
3032 ntvs=
nabtv( hvs, nv, av, bv);
3036 for(
int t0=0;t0<
l;t0++)
3040 if(
tNab(hvs,nv[i],sbv)&&
tNab(hvs,nv[j],sbv))
3043 vecs.push_back(vec);
3046 for(
int t1=t0+1;t1<ntvs.size();t1++)
3048 for(
int t2=t1+1;t2<ntvs.size();t2++)
3050 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3058 vecs.push_back(vec);
3071 std::vector<std::vector<int> > re=
getvector(id_re,l);
3075 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3083 solve=
value2(mv,nv,mts,ntvs,solve,av,bv);
3099 ideal bi=
findb(h),ai;
3103 std::vector<int> bv,av;
3104 std::vector<std::vector<int> >
solve;
3116 PrintS(
"This is a set according to current b:\n");
3133 Print(
"There are %d graded pieces in total.\n",
gp);
3142 std::vector<int>
phimagel(std::vector<int> fv, std::vector<int> av, std::vector<int> bv)
3144 std::vector<int> nv;
3154 std::vector<std::vector<int> >
value1l(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > lks, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
3157 std::vector<int> pv;
3158 std::vector<int>
base;
3159 std::vector<std::vector<int> > bases;
3160 for(
int t=0;t<vecs.size();t++)
3162 for(
int i=0;
i<mvs.size();
i++)
3165 for(j=0;j<lks.size();j++)
3169 base.push_back(vecs[t][j]);
break;
3174 if(base.size()!=mvs.size())
3176 WerrorS(
"Errors in Values Finding(value1l)!");
3182 bases.push_back(base);
3195 Print(
"The time of value matching for first order deformation: %.2f sec ;\n", ((
double) t_value)/CLOCKS_PER_SEC);
3196 Print(
"The total time of fpiece: %.2f sec ;\n", ((
double) t_total)/CLOCKS_PER_SEC);
3197 Print(
"The time of equations construction for fpiece: %.2f sec ;\n", ((
double) t_construct)/CLOCKS_PER_SEC);
3198 Print(
"The total time of equations solving for fpiece: %.2f sec ;\n", ((
double) t_solve)/CLOCKS_PER_SEC);
3199 PrintS(
"__________________________________________________________\n");
3204 std::vector<std::vector<int> >
gpl(ideal
h,poly a,poly
b)
3207 std::vector<std::vector<int> > hvs=
supports(h),sbv,nv,mv,good,
solve;
3220 tnv=
tnab(hvs,nv,sbv);
3221 for(i=0;i<tnv.size();i++)
3224 bad.push_back(co+1);
3242 solve=
eli2(n,bad,good);
3249 std::vector<int> su=
make1(n);
3250 std::vector<std::vector<int> > suu;
3279 solve=
gpl(id_links,e,b);
3281 nvl=
Nabv(lks,em,bv);
3282 solve=
value1l(mv, nvl , solve, av, bv);
3297 std::vector<std::vector<int> >
value2l(std::vector<std::vector<int> > mvs, std::vector<std::vector<int> > lks, std::vector<std::vector<int> > mts, std::vector<std::vector<int> > lkts, std::vector<std::vector<int> > vecs,std::vector<int> av, std::vector<int> bv)
3299 std::vector<int> pv,qv,
base;
3301 std::vector<std::vector<int> > bases;
3306 for(
int t=0;t<vecs.size();t++)
3308 for(
int i=0;
i<mts.size();
i++)
3318 for(j=0;j<lkts.size();j++)
3322 if(
vEvl(pv,lks[row])&&
vEvl(qv,lks[col]))
3324 base.push_back(vecs[t][j]);
break;
3326 else if(
vEvl(qv,lks[row])&&
vEvl(pv,lks[col]))
3328 base.push_back(-vecs[t][j]);
break;
3337 if(base.size()!=mts.size())
3339 WerrorS(
"Errors in Values Finding!");
3344 bases.push_back(base);
3351 std::vector<std::vector<int> >
gpl2(ideal
h,poly a,poly
b)
3354 std::vector<std::vector<int> > hvs=
supports(h),sbv,nv,mv,mts,vecs,vars,ntvs,
solve;
3360 tnv=
tnab(hvs,nv,sbv);
3363 mts=
mabtv(hvs,mv,av,bv);
3366 ntvs=
nabtv( hvs, nv, av, bv);
3370 for(
int t0=0;t0<
l;t0++)
3374 if(
tNab(hvs,nv[i],sbv)&&
tNab(hvs,nv[j],sbv))
3377 vecs.push_back(
vec);
3380 for(
int t1=t0+1;t1<ntvs.size();t1++)
3382 for(
int t2=t1+1;t2<ntvs.size();t2++)
3384 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3392 vecs.push_back(
vec);
3402 std::vector<std::vector<int> > re=
getvector(id_re,l);
3404 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3429 std::vector<std::vector<int> > hvs=
supports(h), mv=
Mabv(h,a,b),mts,
solve,lks,nvl,ntsl;
3430 mts=
mabtv(hvs,mv,av,bv);
3434 nvl=
Nabv(lks,em,bv);
3436 ntsl=
nabtv(lks,nvl,em,bv);
3438 solve=
gpl2(id_links,e,b);
3440 if(solve.size() > 0)
3442 solve=
value2l(mv, nvl, mts, ntsl, solve, av, bv);
3491 std::vector<int> pv;
3506 std::vector<std::vector<int> >
triface(poly
p,
int vert)
3510 std::vector<std::vector<int> > fvs0, fvs;
3511 vec.push_back(vert);
3515 for(i=0;i<fvs0.size();i++)
3518 vec.push_back(vert);
3535 std::vector<std::vector<int> > vecs=
supports(h),vs,vs0;
3580 for(i=0;i<fv1.size();i++)
3582 if(
IsinL(fv1[i], fv2))
3583 ev.push_back(fv1[i]);
3608 std::vector<std::vector<int> >
tetraface(poly
p, poly q,
int vert)
3612 std::vector<std::vector<int> > fvs1, fvs2, fvs;
3613 vec.push_back(vert);
3621 for(i=0;i<fvs2.size();i++)
3624 vec.push_back(vert);
3636 std::vector<std::vector<int> > vecs=
supports(h), vs1;
3651 std::vector<std::vector<int> >
penface(poly
p, poly q, poly
g,
int vert)
3654 std::vector<int> ev1=
commonedge(p, q), ev2=
commonedge(p, g), ev3=
commonedge(q, g), ind,
vec, fv1=
support1(p), fv2=
support1(q), fv3=
support1(g);
3655 std::vector<std::vector<int> > fvs1, fvs2, fvs3, fvs, evec;
3656 evec.push_back(ev1);
3657 evec.push_back(ev2);
3658 evec.push_back(ev3);
3659 for(i=0;i<evec.size();i++)
3661 if(evec[i].
size()==2)
3668 vec.push_back(vert);
3678 for(i=0;i<evec.size();i++)
3680 if(evec[i].
size()==2)
3685 for(i=0;i<fvs3.size();i++)
3688 vec.push_back(vert);
3701 std::vector<std::vector<int> > vecs=
supports(h), vs1, evec;
3702 evec.push_back(ev1);
3703 evec.push_back(ev2);
3704 evec.push_back(ev3);
3705 for(i=0;i<evec.size();i++)
3707 if(evec[i].
size()==2)
3731 for(i=0;i<vecs.size();i++)
3733 if(vecs[i].
size()==2 &&
IsinL(ver, vecs[i]))
3774 std::vector<std::vector<int> >
vsMinusvs(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
3777 std::vector<std::vector<int> > vs=vs1;
3778 for(i=0;i<vs2.size();i++)
3786 std::vector<std::vector<int> >
vs_subsets(std::vector<std::vector<int> > vs)
3788 std::vector<std::vector<int> > sset, bv;
3789 for(
int i=0;
i<vs.size();
i++)
3817 std::vector<std::vector<int> >
p_new(ideal Xo, ideal Sigma)
3835 fvs=
triface(Sigma->m[0], vert);
3839 fvs=
tetraface(Sigma->m[0], Sigma->m[1], vert);
3843 fvs=
penface(Sigma->m[0], Sigma->m[1], Sigma->m[2], vert);
3855 std::vector<int> ev;
3856 int ednum=vsig.size();
3859 vsig.push_back(
commonedge(sig->m[0], sig->m[1]));
3890 std::vector<std::vector<int> >
phi1(poly a, ideal Sigma)
3894 for(
int i=0;
i<ss.size();
i++)
3897 if(
intvec.size()==av.size())
3908 std::vector<std::vector<int> >
phi2(poly a, ideal Xo, ideal Sigma,
int vert)
3911 std::vector<std::vector<int> > ss=
p_new(Sigma, Xo), fvs;
3913 for(
int i=0;
i<ss.size();
i++)
3916 if(
intvec.size()==av.size())
3926 std::vector<std::vector<int> >
links_new(poly a, ideal Xo, ideal Sigma,
int vert,
int ord)
3929 std::vector<std::vector<int> > lko, lkn, lk1, lk2;
3937 lk2=
phi2(a, Xo, Sigma, vert);
3944 lkn=
phi2(a, Xo, Sigma, vert);
3947 WerrorS(
"Cannot find the links smartly!");
3959 for(
int i=0;
i<bs.size();
i++)
3975 std::vector<int> vp, iv=
phimagel(
v, v1, v2);
3994 std::vector<int> v1=
phimagel(vp, va, vb), v2=
phimagel(vq, va, vb), v3=
phimagel(vf, va, vb), v4=
phimagel(vg, va, vb);
4025 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
4031 std::vector<int>
v_minus(std::vector<int> v1, std::vector<int> v2)
4033 std::vector<int>
vec;
4034 for(
int i=0;
i<v1.size();
i++)
4036 vec.push_back(v1[
i]-v2[
i]);
4045 std::vector<int> av,bv;
4065 std::vector<std::vector<int> >
star(poly a, ideal
h)
4068 std::vector<std::vector<int> > st,X=
supports(h);
4070 for(i=0;i<X.size();i++)
4085 std::vector<std::vector<int> > vecs;
4087 vecs.push_back(
vec);
4099 std::vector<std::vector<int> > vecs_minus, vecs_plus, lk=
links(a,h), hvs=
supports(h), sub, bys=
boundary(a);
4113 vec_n.push_back(vert);
4114 for(i=0;i<lk.size();i++)
4117 vecs_minus.push_back(
vec);
4118 for(j=0;j<bys.size();j++)
4122 vecs_plus.push_back(
vec);
4133 std::vector<int> bvs=
support1(b), vs;
4134 std::vector<std::vector<int> > bset;
4135 for(
int i=0;
i<bvs.size();
i++)
4137 for(
int j=0;
j<bvs.size(),
j!=
i;
j++)
4139 vs.push_back(bvs[
j]);
4154 ideal ai=
p_a(h), bi;
4210 ideal hh=(ideal)h->
Data();
4227 ideal hh=(ideal)h->
Data();
4244 ideal hh=(ideal)h->
Data();
4257 ideal h1= (ideal)h->
Data();
4261 poly
p= (poly)h->
Data();
4265 poly q= (poly)h->
Data();
4278 std::vector<int> dg=
gdegree(a,b);
4299 poly
p= (poly)h->
Data();
4303 poly q= (poly)h->
Data();
4318 poly
p= (poly)h->
Data();
4322 poly q= (poly)h->
Data();
4338 ideal h1= (ideal)h->
Data();
4351 ideal h1= (ideal)h->
Data();
4365 ideal h1= (ideal)h->
Data();
4378 ideal h1= (ideal)h->
Data();
4382 poly
p= (poly)h->
Data();
4397 ideal h1= (ideal)h->
Data();
4401 poly q= (poly)h->
Data();
4405 int d= (int)(
long)h->
Data();
4420 ideal h1= (ideal)h->
Data();
4424 poly
p= (poly)h->
Data();
4428 poly q= (poly)h->
Data();
4443 ideal h1= (ideal)h->
Data();
4447 poly
p= (poly)h->
Data();
4451 poly q= (poly)h->
Data();
4455 int d= (int)(
long)h->
Data();
4472 ideal h1= (ideal)h->
Data();
4476 poly
p= (poly)h->
Data();
4480 poly q= (poly)h->
Data();
4495 ideal h1= (ideal)h->
Data();
4499 poly
p= (poly)h->
Data();
4503 poly q= (poly)h->
Data();
4518 ideal h1= (ideal)h->
Data();
4522 poly
p= (poly)h->
Data();
4526 poly q= (poly)h->
Data();
4541 poly
p= (poly)h->
Data();
4545 ideal h1= (ideal)h->
Data();
4547 std::vector<std::vector<int> > vecs=
links(p,h1);
4559 ideal h1= (ideal)h->
Data();
4572 ideal h1= (ideal)h->
Data();
4576 poly
p= (poly)h->
Data();
4580 int d= (int)(
long)h->
Data();
4595 ideal h1= (ideal)h->
Data();
4599 poly
p= (poly)h->
Data();
4603 poly q= (poly)h->
Data();
4607 int d= (int)(
long)h->
Data();
4623 ideal h1= (ideal)h->
Data();
4627 poly
p= (poly)h->
Data();
4631 poly q= (poly)h->
Data();
4635 poly
g= (poly)h->
Data();
4639 int d= (int)(
long)h->
Data();
4657 std::vector<int> bset,bs;
4658 std::vector<std::vector<int> > gset;
4661 int n= (int)(
long)h->
Data();
4665 ideal bi= (ideal)h->
Data();
4669 ideal gi= (ideal)h->
Data();
4674 bset.push_back(bs[0]);
4675 else if(bs.size()==0)
4679 WerrorS(
"Errors in T^1 Equations Solving!");
4687 std::vector<std::vector<int> > vecs=
eli2(n,bset,gset);
4701 ideal h1= (ideal)h->
Data();
4717 ideal h1= (ideal)h->
Data();
4721 poly
p= (poly)h->
Data();
4737 ideal h1= (ideal)h->
Data();
4741 poly
p= (poly)h->
Data();
4745 poly q= (poly)h->
Data();
4747 std::vector<std::vector<int> > vecs=
supports(h1);
4763 ideal h1= (ideal)h->
Data();
4767 poly
p= (poly)h->
Data();
4771 poly q= (poly)h->
Data();
4773 std::vector<std::vector<int> > vecs=
supports(h1), sbv,tnbr;
4775 std::vector<std::vector<int> > nvs=
Nabv(vecs, pv, qv);
4778 std::vector<int> tnv =
tnab(vecs,nvs,sbv);
4779 for(
int i=0;
i<tnv.size();
i++)
4781 tnbr.push_back(nvs[tnv[
i]]);
4796 ideal h1= (ideal)h->
Data();
4800 ideal h2= (ideal)h->
Data();
4815 ideal h1= (ideal)h->
Data();
4819 poly
p= (poly)h->
Data();
4823 poly q= (poly)h->
Data();
4839 ideal h1= (ideal)h->
Data();
4843 poly
p= (poly)h->
Data();
4847 poly q= (poly)h->
Data();
4848 std::vector<std::vector<int> > hvs=
supports(h1), nv, ntvs;
4851 ntvs=
nabtv( hvs, nv, av, bv);
4852 std::vector<std::vector<poly> > pvs=
idMakei(nv,ntvs);
4854 for(
int i=0;
i<pvs.size();
i++)
4874 poly a= (poly)h->
Data();
4878 ideal Xo= (ideal)h->
Data();
4882 ideal Sigma= (ideal)h->
Data();
4886 int vert= (int)(
long)h->
Data();
4890 int ord= (int)(
long)h->
Data();
4908 poly
p= (poly)h->
Data();
4912 ideal h1= (ideal)h->
Data();
4926 ideal h1= (ideal)h->
Data();
4930 ideal h2= (ideal)h->
Data();
4943 ideal h1= (ideal)h->
Data();
4957 ideal h1= (ideal)h->
Data();
4961 ideal h2= (ideal)h->
Data();
4977 poly
p= (poly)h->
Data();
4994 poly
p= (poly)h->
Data();
5008 ideal h1= (ideal)h->
Data();
5012 poly
p= (poly)h->
Data();
5027 ideal h1= (ideal)h->
Data();
5031 poly
p= (poly)h->
Data();
5032 std::vector<std::vector<int> > st=
star(p, h1);
5033 std::vector<std::vector<int> > hvs=
supports(h1);
5034 std::vector<std::vector<int> > re=
vsMinusvs(hvs, st);
5048 ideal h1= (ideal)h->
Data();
5052 ideal h2= (ideal)h->
Data();
5068 poly
p= (poly)h->
Data();
5072 ideal h1= (ideal)h->
Data();
5088 ideal h2= (ideal)h->
Data();
5092 poly
p= (poly)h->
Data();
5107 ideal h1= (ideal)h->
Data();
5111 ideal h2= (ideal)h->
Data();
5125 ideal h1= (ideal)h->
Data();
5129 ideal h2= (ideal)h->
Data();
5144 poly
p= (poly)h->
Data();
5148 ideal h1= (ideal)h->
Data();
5152 poly a= (poly)h->
Data();
5156 poly
b= (poly)h->
Data();
5158 res->
data =(
void *)(
long)
isoNum(p, h1, a, b);
5173 poly
p= (poly)h->
Data();
5177 poly q= (poly)h->
Data();
5181 poly
f= (poly)h->
Data();
5185 poly
g= (poly)h->
Data();
5189 poly a= (poly)h->
Data();
5193 poly
b= (poly)h->
Data();
5195 res->
data =(
void *)(
long)
ifIso(p,q,f,g, a, b);
5211 poly
p= (poly)h->
Data();
5215 int num= (int)(
long)h->
Data();
5230 ideal h1= (ideal)h->
Data();
5244 ideal h1= (ideal)h->
Data();
5258 ideal h1= (ideal)h->
Data();
5262 int num= (int)(
long)h->
Data();
ideal mingens(ideal h, poly a, poly b)
intvec * gradedpiece1n(ideal h, poly a, poly b)
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
std::vector< std::vector< int > > vAbsorb(std::vector< int > bset, std::vector< std::vector< int > > gset)
void listprint(std::vector< int > vec)
BOOLEAN fb(leftv res, leftv args)
BOOLEAN fgpl(leftv res, leftv args)
const CanonicalForm int s
intvec * gradedpiece2nl(ideal h, poly a, poly b)
BOOLEAN SRideal(leftv res, leftv args)
idhdl ggetid(const char *n)
Class used for (list of) interpreter objects.
BOOLEAN t1h(leftv res, leftv args)
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
void rem(unsigned long *a, unsigned long *q, unsigned long p, int °a, int degq)
ideal makemab(ideal h, poly a, poly b)
BOOLEAN ifIsomorphism(leftv res, leftv args)
std::vector< int > commonedge(poly p, poly q)
ideal idMake(std::vector< std::vector< int > > vecs)
BOOLEAN nabvl(leftv res, leftv args)
std::vector< int > keeporder(std::vector< int > vec)
int ifIso(poly p, poly q, poly f, poly g, poly a, poly b)
intvec * gradedpiece2n(ideal h, poly a, poly b)
intvec * Tmat(std::vector< std::vector< int > > vecs)
BOOLEAN idcomplement(leftv res, leftv args)
BOOLEAN eqsolve1(leftv res, leftv args)
BOOLEAN stars(leftv res, leftv args)
std::vector< int > phimagel(std::vector< int > fv, std::vector< int > av, std::vector< int > bv)
BOOLEAN idModulo(leftv res, leftv args)
ideal genst(ideal h, poly a, poly b)
std::vector< int > v_minus(std::vector< int > v1, std::vector< int > v2)
int vInvs(std::vector< int > vec, std::vector< std::vector< int > > vecs)
ideal idMinusp(ideal I, poly p)
std::vector< std::vector< int > > boundary(poly a)
std::vector< std::vector< int > > p_new(ideal Xo, ideal Sigma)
intvec * gradedpiece1nl(ideal h, poly a, poly b, int set)
BOOLEAN pChange(leftv res, leftv args)
poly pMaken(std::vector< int > vbase)
INST_VAR sleftv iiRETURNEXPR
std::vector< std::vector< int > > tetraface(poly p, poly q, int vert)
BOOLEAN Links(leftv res, leftv args)
static short rVar(const ring r)
#define rVar(r) (r->N)
BOOLEAN Valency(leftv res, leftv args)
BOOLEAN isSim(leftv res, leftv args)
std::vector< std::vector< int > > ofindbases(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
bool IsinL(int a, std::vector< int > vec)
BOOLEAN p_New(leftv res, leftv args)
std::vector< int > gensindex(ideal M, ideal ids)
static poly pp_Mult_mm(poly p, poly m, const ring r)
ideal getpresolve(ideal h)
std::vector< std::vector< int > > vecqring(std::vector< std::vector< int > > vec1, std::vector< std::vector< int > > vec2)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
std::vector< int > phimage(std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > vsUnion(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
void lpsprint(std::vector< std::vector< poly > > pvs)
poly p_Subst(poly p, int n, poly e, const ring r)
std::vector< poly > pMakei(std::vector< std::vector< int > > mv, std::vector< int > vbase)
ideal finda(ideal h, poly S, int ddeg)
bool solve(int **extmat, int nrows, int ncols)
std::vector< std::vector< int > > eli2(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
std::vector< std::vector< int > > gpl2(ideal h, poly a, poly b)
void WerrorS(const char *s)
std::vector< int > vecUnion(std::vector< int > vec1, std::vector< int > vec2)
ideal triangulations1(ideal h, poly p, int vert)
std::vector< std::vector< int > > id_subsets(std::vector< std::vector< int > > vecs)
int isoNum(poly p, ideal I, poly a, poly b)
std::vector< int > makeequation(int i, int j, int t)
std::vector< std::vector< int > > links(poly a, ideal h)
ideal triangulations3(ideal h, poly p, poly q, poly g, int vert)
poly pMake3(std::vector< int > vbase)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
std::vector< std::vector< int > > value2l(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > lks, std::vector< std::vector< int > > mts, std::vector< std::vector< int > > lkts, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
#define pEqualPolys(p1, p2)
std::vector< std::vector< int > > star(poly a, ideal h)
std::vector< int > eli1(std::vector< int > eq1, std::vector< int > eq2)
ideal id_MaxIdeal(const ring r)
initialise the maximal ideal (at 0)
ideal p_b(ideal h, poly a)
BOOLEAN gd(leftv res, leftv args)
intvec * dmat(poly a, poly b)
std::vector< std::vector< int > > vsIntersection(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
std::vector< int > fvarsvalue(int vnum, std::vector< int > fvars)
bool nabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
BOOLEAN mabvl(leftv res, leftv args)
BOOLEAN pb(leftv res, leftv args)
bool condition1for2(std::vector< int > pv, std::vector< int > qv, std::vector< int > bv)
std::vector< std::vector< int > > penface(poly p, poly q, poly g, int vert)
bool condition3for2(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< poly > > idMakei(std::vector< std::vector< int > > mv, std::vector< std::vector< int > > vecs)
#define SI_MOD_INIT0(name)
std::vector< int > make1(int n)
std::vector< int > vecIntersection(std::vector< int > p, std::vector< int > q)
std::vector< std::vector< int > > phi2(poly a, ideal Xo, ideal Sigma, int vert)
std::vector< std::vector< int > > listsinsertlist(std::vector< std::vector< int > > gset, int a, int b)
std::vector< std::vector< int > > subspacetn(std::vector< std::vector< int > > N, std::vector< int > tN, std::vector< std::vector< int > > ntvs)
BOOLEAN idminus(leftv res, leftv args)
std::vector< std::vector< int > > Mabv(ideal h, poly a, poly b)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pGetExp(p, i)
Exponent.
ideal idMinus(ideal h1, ideal h2)
std::vector< std::vector< int > > vsMinusvs(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
ideal id_complement(ideal h)
BOOLEAN stellarremain(leftv res, leftv args)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
ideal idMake3(std::vector< std::vector< int > > vecs)
Coefficient rings, fields and other domains suitable for Singular polynomials.
std::vector< std::vector< int > > p_constant(ideal Xo, ideal Sigma)
poly pMake(std::vector< int > vbase)
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ...
const CanonicalForm CFMap CFMap & N
void firstorderdef_setup(SModulFunctions *p)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent : the integer VarOffset encodes:
BOOLEAN sgp(leftv res, leftv args)
static int max(int a, int b)
BOOLEAN fa(leftv res, leftv args)
static long pTotaldegree(poly p)
The main handler for Singular numbers which are suitable for Singular polynomials.
std::vector< int > subspace1(std::vector< std::vector< int > > mv, std::vector< int > bv)
void gradedpiece1(ideal h, poly a, poly b)
BOOLEAN support(leftv res, leftv args)
bool condition2for2(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > sv, std::vector< int > av, std::vector< int > bv)
BOOLEAN genstt(leftv res, leftv args)
std::vector< std::vector< int > > subspacet(std::vector< std::vector< int > > mv, std::vector< int > bv, std::vector< std::vector< int > > ntvs)
int num4dim(ideal h, int n)
BOOLEAN existsub(leftv res, leftv args)
ideal sfreemon(ideal h, int deg)
std::vector< std::vector< int > > triface(poly p, int vert)
std::vector< std::vector< int > > nabtv(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > Nv, std::vector< int > av, std::vector< int > bv)
bool vsubset(std::vector< int > vec1, std::vector< int > vec2)
ideal complementsimplex(ideal h)
std::vector< std::vector< int > > supports2(ideal h)
static BOOLEAN p_DivisibleBy(poly a, poly b, const ring r)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted ...
std::vector< int > freevars(int n, std::vector< int > bset, std::vector< std::vector< int > > gset)
std::vector< std::vector< int > > vsMake(ideal h)
bool tNab(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< std::vector< int > > bvs)
intvec * edgemat(poly p, poly q)
static void TimeShow(clock_t t_construct, clock_t t_solve, clock_t t_value, clock_t t_total)
void PrintS(const char *s)
BOOLEAN fgp(leftv res, leftv args)
std::vector< int > vecMinus(std::vector< int > vec1, std::vector< int > vec2)
std::vector< std::vector< int > > links_new(poly a, ideal Xo, ideal Sigma, int vert, int ord)
void lpprint(std::vector< poly > pv)
bool mabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > value1l(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > lks, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
BOOLEAN bprime(leftv res, leftv args)
BOOLEAN dimsim(leftv res, leftv args)
std::vector< std::vector< int > > vs_subsets(std::vector< std::vector< int > > vs)
bool vInvsl(std::vector< int > vec, std::vector< std::vector< int > > vecs)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
BOOLEAN nfaces2(leftv res, leftv args)
BOOLEAN tnabvl(leftv res, leftv args)
std::vector< std::vector< int > > minisolve(std::vector< std::vector< int > > solve, std::vector< int > index)
std::vector< int > support1(poly p)
BOOLEAN p_EqualPolys(poly p1, poly p2, const ring r)
std::vector< int > make0(int n)
std::vector< int > support2(poly p)
static int index(p_Length length, p_Ord ord)
void rChangeCurrRing(ring r)
BOOLEAN nonf2f(leftv res, leftv args)
std::vector< std::vector< int > > mabtv(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > Mv, std::vector< int > av, std::vector< int > bv)
static FORCE_INLINE coeffs nCopyCoeff(const coeffs r)
"copy" coeffs, i.e. increment ref
std::vector< std::vector< int > > soleli1(std::vector< std::vector< int > > eqs)
BOOLEAN vsIntersec(leftv res, leftv args)
ideal idInit(int idsize, int rank)
initialise an ideal / module
const Variable & v
< [in] a sqrfree bivariate poly
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv sl)
void listsprint(std::vector< std::vector< int > > posMat)
std::vector< int > vertset(std::vector< std::vector< int > > vecs)
ideal triangulations2(ideal h, poly p, poly q, int vert)
ideal idadda(ideal h1, ideal h2)
std::vector< std::vector< int > > canonicalbase(int n)
std::vector< std::vector< int > > phi1(poly a, ideal Sigma)
BOOLEAN nfaces3(leftv res, leftv args)
std::vector< std::vector< int > > supports(ideal h)
ideal idmodulo(ideal h1, ideal h2)
ideal id_Add(ideal h1, ideal h2, const ring r)
h1 + h2
std::vector< std::vector< int > > gpl(ideal h, poly a, poly b)
BOOLEAN nfaces1(leftv res, leftv args)
BOOLEAN makeSimplex(leftv res, leftv args)
int valency(ideal h, poly p)
ideal idMaken(std::vector< std::vector< int > > vecs)
BOOLEAN linkn(leftv res, leftv args)
ideal c_New(ideal Io, ideal sig)
std::vector< std::vector< int > > p_change(ideal Sigma)
std::vector< std::vector< int > > vsMinusv(std::vector< std::vector< int > > vecs, std::vector< int > vec)
BOOLEAN stellarsubdivision(leftv res, leftv args)
std::vector< std::vector< int > > stellarsub(poly a, ideal h)
std::vector< std::vector< int > > b_subsets(std::vector< int > vec)
BOOLEAN psMinusp(leftv res, leftv args)
std::vector< int > findalpha(std::vector< std::vector< int > > mv, std::vector< int > bv)
std::vector< int > numfree(ideal h)
bool nabtconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > value2(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > mts, std::vector< std::vector< int > > nts, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > getvector(ideal h, int n)
void gradedpiece2(ideal h, poly a, poly b)
BOOLEAN idsr(leftv res, leftv args)
int existIn(poly b, ideal Xs)
std::vector< int > tnab(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > bvs)
std::vector< std::vector< int > > Nabv(std::vector< std::vector< int > > hvs, std::vector< int > av, std::vector< int > bv)
BOOLEAN isoNumber(leftv res, leftv args)
BOOLEAN pa(leftv res, leftv args)
bool vEvl(std::vector< int > vec1, std::vector< int > vec2)
std::vector< int > ofindbases1(int num, int vnum, std::vector< int > bset, std::vector< std::vector< int > > gset)
ideal idAdd(ideal h1, ideal h2)
h1 + h2
int(* iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic, BOOLEAN(*func)(leftv res, leftv v))
std::vector< int > findalphan(std::vector< std::vector< int > > N, std::vector< int > tN)
bool condition2for2nv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > fv)
int redefinedeg(poly p, int num)
int SI_MOD_INIT0() cohomo(SModulFunctions *p)
std::vector< std::vector< int > > bsubsets_1(poly b)
BOOLEAN tsets(leftv res, leftv args)
#define IMATELEM(M, I, J)
BOOLEAN numdim(leftv res, leftv args)
std::vector< int > vecbase1(int num, std::vector< int > oset)
std::vector< std::vector< int > > value1(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
BOOLEAN newDegree(leftv res, leftv args)
std::vector< int > vMake(poly p)
ideal qringadd(ideal h1, ideal h2, int deg)
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
BOOLEAN pConstant(leftv res, leftv args)
std::vector< int > gdegree(poly a, poly b)
BOOLEAN sgpl(leftv res, leftv args)
BOOLEAN comedg(leftv res, leftv args)
BOOLEAN cNew(leftv res, leftv args)
BOOLEAN nabtvl(leftv res, leftv args)
std::vector< int > subspacet1(int num, std::vector< std::vector< int > > ntvs)
#define pCopy(p)
return a copy of the poly
bool IsInX(poly p, ideal X)
bool vEv(std::vector< int > vec1, std::vector< int > vec2)