10#if !defined(__CYGWIN__) || defined(STATIC_VERSION)
68 for(
i=0;
i<posMat.size();
i++)
99 for(
int i=0;
i<pv.size();
i++)
116 for(
int i=0;
i<pvs.size();
i++)
165 std::vector<int> inte;
166 for(
i=0;
i<
p.size();
i++)
169 inte.push_back(
p[
i]);
184bool vEv(std::vector<int> vec1,std::vector<int> vec2)
186 int i,
j, lg1=vec1.size(),lg2=vec2.size();
193 for(
j=0;
j<vec1.size();
j++)
206bool vsubset(std::vector<int> vec1, std::vector<int> vec2)
209 if(vec1.size()>vec2.size())
211 for(
i=0;
i<vec1.size();
i++)
220bool vEvl(std::vector<int> vec1, std::vector<int> vec2)
222 if(vec1.size()==0 && vec2.size()==0)
233bool vInvsl(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
236 for(
i=0;
i<vecs.size();
i++)
251int vInvs(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
254 for(
i=0;
i<vecs.size();
i++)
267std::vector<int>
vecUnion(std::vector<int> vec1, std::vector<int> vec2)
269 std::vector<int>
vec=vec1;
271 for(
i=0;
i<vec2.size();
i++)
274 vec.push_back(vec2[
i]);
281std::vector<int>
vecMinus(std::vector<int> vec1,std::vector<int> vec2)
283 std::vector<int>
vec;
284 for(
int i=0;
i<vec1.size();
i++)
288 vec.push_back(vec1[
i]);
299std::vector<std::vector<int> >
vsMinusv(std::vector<std::vector<int> > vecs, std::vector<int>
vec)
302 std::vector<std::vector<int> >
rem;
303 for(
i=0;
i<vecs.size();
i++)
307 rem.push_back(vecs[
i]);
314std::vector<std::vector<int> >
vsUnion(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
317 std::vector<std::vector<int> > vs=vs1;
318 for(
i=0;
i<vs2.size();
i++)
322 vs.push_back(vs2[
i]);
333std::vector<std::vector<int> >
vsIntersection(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
336 std::vector<std::vector<int> > vs;
337 for(
i=0;
i<vs2.size();
i++)
341 vs.push_back(vs2[
i]);
358 std::vector<int> supset;
359 if(
p==0)
return supset;
378 std::vector<std::vector<int> > vecs;
379 std::vector<int>
vec;
400 std::vector<int> supset;
422 std::vector<std::vector<int> > vecs;
423 std::vector<int>
vec;
438 int n=vbase.size(); poly
p,q=0;
455ideal
idMake(std::vector<std::vector<int> > vecs)
457 int lv=vecs.size(),
i,
j;
526 std::vector<int> vbase;
545 std::vector<int>
vec;
546 std::vector<std::vector<int> > vecs;
559std::vector<std::vector<int> >
vecqring(std::vector<std::vector<int> > vec1, std::vector<std::vector<int> > vec2)
564 std::vector<std::vector<int> > vecs=
vsMake(
h);
587ideal
idMaken(std::vector<std::vector<int> > vecs)
591 int i,lv=vecs.size();
611 std::vector<std::vector<int> > vecs;
614 bv.push_back(
vec[
i]);
619 for(
i=0;
i<vecs.size();
i++)
621 for(
j=
i+1;
j<vecs.size();
j++)
810 ideal asfmons,sfmons,mons,
p;
944 ideal h1,mons,id_re=
idInit(1,1);
1000 id_so=
idadda(id_so, id_re);
1114 std::vector<std::vector<int> > hvs=
supports(
h);
1120 if(
vInvsl(
v,hvs)&&in.size()==0)
1141bool mabconditionv(std::vector<std::vector<int> > hvs,std::vector<int> pv,std::vector<int> av,std::vector<int> bv)
1143 std::vector<int> uv=
vecUnion(pv,av);
1154std::vector<std::vector<int> >
Mabv(ideal
h,poly a,poly
b)
1159 for(
int i=0;
i<h2v.size();
i++)
1187std::vector<int>
eli1(std::vector<int> eq1,std::vector<int> eq2)
1190 std::vector<int> eq;
1232 std::vector<int> yaya;
1244std::vector<std::vector<int> >
soleli1( std::vector<std::vector<int> > eqs)
1247 std::vector<int> yaya;
1248 std::vector<std::vector<int> > pre=eqs, ppre, re;
1251 re.push_back(eqs[0]);
1252 pre.erase(pre.begin());
1257 for(
i=1;
i<re.size();
i++)
1261 yaya=
eli1(re[
i],yaya);
1269 pre.erase(pre.begin());
1279std::vector<int>
freevars(
int n, std::vector<int> bset, std::vector<std::vector<int> > gset)
1281 int ql=gset.size(), bl=bset.size(),
i;
1282 std::vector<int>
mvar, fvar;
1285 mvar.push_back(bset[
i]);
1289 mvar.push_back(gset[
i][0]);
1306 std::vector<int> fset=fvars;
1307 for(
i=0;
i<fset.size();
i++)
1311 fset.erase(fset.begin()+
i);
1323std::vector<std::vector<int> >
vAbsorb( std::vector<int> bset,std::vector<std::vector<int> > gset)
1325 std::vector<int> badset=bset;
1326 int i,
j,
m, bl=bset.size(), gl=gset.size();
1332 if(gset[
j][0]==
m && !
IsinL(gset[
j][1],badset))
1334 badset.push_back(gset[
j][1]);
1335 gset.erase(gset.begin()+
j);
1340 else if(!
IsinL(gset[
j][0],badset) && gset[
j][1]==
m)
1342 badset.push_back(gset[
j][0]);
1343 gset.erase(gset.begin()+
j);
1348 else if(
IsinL(gset[
j][0],badset) &&
IsinL(gset[
j][1],badset))
1350 gset.erase(gset.begin()+
j);
1360 if(badset.size()==0) badset.push_back(0);
1361 gset.push_back(badset);
1375 std::vector<int>
base;
1393 std::vector<int>
vec;
1407 std::vector<int>
vec;
1420std::vector<int>
ofindbases1(
int num,
int vnum, std::vector<int> bset,std::vector<std::vector<int> > gset)
1423 std::vector<std::vector<int> > goodset;
1425 std::vector<int> zset=
fvarsvalue(vnum, fvars);
1427 oset.push_back(vnum);
1429 oset=goodset[goodset.size()-1];
1430 goodset.erase(goodset.end());
1444std::vector<std::vector<int> >
ofindbases(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1447 std::vector<std::vector<int> > bases;
1448 std::vector<int> fvars=
freevars(
num, bset, gset), base1;
1449 if (fvars.size()==0)
1452 bases.push_back(base1);
1456 for(
i=0;
i<fvars.size();
i++)
1460 bases.push_back(base1);
1478std::vector<std::vector<int> >
eli2(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1481 std::vector<int> badset;
1482 std::vector<std::vector<int> > goodset,
solve;
1492 int m=goodset.size();
1493 badset=goodset[
m-1];
1494 goodset.erase(goodset.end());
1527std::vector<std::vector<int> >
links(poly a, ideal
h)
1530 std::vector<std::vector<int> > lk,X=
supports(
h);
1531 std::vector<int> U,In,av=
support1(a);
1532 for(
i=0;
i<X.size();
i++)
1536 if( In.size()==0 &&
vInvsl(U,X))
1578 std::vector<int> as;
1579 std::vector<std::vector<int> > hvs=
supports(
h);
1645std::vector<std::vector<int> >
id_subsets(std::vector<std::vector<int> > vecs)
1648 std::vector<std::vector<int> > vvs,
res;
1649 for(
i=0;
i<vecs.size();
i++)
1653 for(
j=0;
j<vvs.size();
j++)
1656 res.push_back(vvs[
j]);
1666std::vector<int>
vertset(std::vector<std::vector<int> > vecs)
1669 std::vector<int> vert;
1670 std::vector<std::vector<int> > vvs;
1673 for(
j=0;
j<vecs.size();
j++)
1691 std::vector<std::vector<int> > pbv,lk=
links(a,
h),
res;
1692 std::vector<int> vert=
vertset(lk), bv;
1697 for(
i=0;
i<
res.size();
i++)
1700 pbv.push_back(
res[
i]);
1807 ideal h1,mons, id_re=
idInit(1,1);
1828std::vector<std::vector<int> >
listsinsertlist(std::vector<std::vector<int> > gset,
int a,
int b)
1830 std::vector<int> eq;
1843 std::vector<int> equation;
1844 equation.push_back(
i);
1845 equation.push_back(
j);
1846 equation.push_back(t);
1860 int n=vbase.size(),co=1;
1862 for(
int i=0;
i<3;
i++)
1881 int i,lv=vecs.size();
1905 sprintf (tt[
i],
"t(%d)",
i+1);
1917std::vector<int>
subspace1(std::vector<std::vector<int> > mv, std::vector<int> bv)
1919 int i,
num=mv.size();
1920 std::vector<int>
base;
1943std::vector<poly>
pMakei(std::vector<std::vector<int> > mv,std::vector<int> vbase)
1946 std::vector<poly> h1;
1948 for(
int i=0;
i<n;
i++)
1959 std::vector<std::vector<poly> >
idMakei(std::vector<std::vector<int> > mv,std::vector<std::vector<int> > vecs)
1961 int i,lv=vecs.size();
1962 std::vector<std::vector<poly> > re;
1963 std::vector<poly>
h;
2030 std::vector<std::vector<int> > suu;
2041 PrintS(
"No element considered!\n");
2077bool 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)
2095bool condition3for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
2097 std::vector<int> v1,v2,v3;
2132 WerrorS(
"presolve.lib are not loaded!");
2142 ideal re=(ideal)L->
m[4].
CopyD();
2156 std::vector<int> fvar;
2178 std::vector<std::vector<int> > vecs;
2179 std::vector<int>
vec;
2190 vecs.push_back(
vec);
2202 std::vector<int>
vec;
2203 std::vector<std::vector<int> > vecs;
2210 std::vector<int> fvar=
numfree(h1);
2251 vecs.push_back(
vec);
2274std::vector<int>
findalpha(std::vector<std::vector<int> > mv, std::vector<int> bv)
2276 std::vector<int> alset;
2277 for(
int i=0;
i<mv.size();
i++)
2298 int i,
j, t, n=ntvs.size();
2299 std::vector<int> subase;
2306 subase.push_back(1);
2310 subase.push_back(-1);
2314 subase.push_back(0);
2326std::vector<std::vector<int> >
subspacet(std::vector<std::vector<int> > mv, std::vector<int> bv,std::vector<std::vector<int> > ntvs)
2329 std::vector<int> alset=
findalpha(mv,bv), subase;
2330 std::vector<std::vector<int> > subases;
2331 for(
i=0;
i<alset.size();
i++)
2334 subases.push_back(subase);
2345std::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)
2347 std::vector<int> v1,var;
2348 std::vector<std::vector<int> > vars;
2349 for(
int i=0;
i<Mv.size();
i++)
2351 for(
int j=
i+1;
j<Mv.size();
j++)
2359 vars.push_back(var);
2373 int t0,t1,t2,
i,
j,t,
m;
2376 std::vector<std::vector<int> > hvs=
supports(
h), mv=
Mabv(
h,a,
b), mts, vecs,vars;
2378 mts=
mabtv(hvs,mv,av,bv);
2379 PrintS(
"The homomorphism should map onto:\n");
2384 vars=
mabtv(hvs,mv,av,bv);
2386 for(t0=0;t0<vars.size();t0++)
2397 vecs.push_back(
vec);
2407 vecs.push_back(
vec);
2410 for(t1=t0+1;t1<vars.size();t1++)
2412 for(t2=t1+1;t2<vars.size();t2++)
2414 if(vars[t0][0]==vars[t1][0]&&vars[t1][1]==vars[t2][1]&&vars[t0][1]==vars[t2][0])
2422 vecs.push_back(
vec);
2434 std::vector<std::vector<int> > re=
getvector(id_re,vn);
2435 PrintS(
"this is the solution for ideal :\n");
2438 std::vector<std::vector<int> > sub=
subspacet(mv, bv,vars);
2439 PrintS(
"this is the solution for subspace:\n");
2443 PrintS(
"This is the solution of coefficients:\n");
2449 PrintS(
"No element considered!");
2485bool nabconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2504std::vector<std::vector<int> >
Nabv(std::vector<std::vector<int> > hvs, std::vector<int> av, std::vector<int> bv)
2506 std::vector<std::vector<int> > vecs;
2513 vecs.push_back(hvs[
i]);
2526bool nabtconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
2528 std::vector<int> v1;
2539std::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)
2541 std::vector<int> v1,var;
2542 std::vector<std::vector<int> > vars;
2543 for(
int i=0;
i<Nv.size();
i++)
2545 for(
int j=
i+1;
j<Nv.size();
j++)
2552 vars.push_back(var);
2570bool tNab(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<std::vector<int> > bvs)
2572 std::vector<int> sv;
2573 if(bvs.size()<=1)
return false;
2574 for(
int i=0;
i<bvs.size();
i++)
2591std::vector<int>
tnab(std::vector<std::vector<int> > hvs,std::vector<std::vector<int> > nvs,std::vector<std::vector<int> > bvs)
2593 std::vector<int> pv,
vec;
2594 for(
int j=0;
j<nvs.size();
j++)
2597 if(
tNab(hvs, pv, bvs))
2613std::vector<int>
phimage(std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2615 std::vector<int> qv=
vecUnion(pv,av);
2624std::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)
2627 std::vector<int> pv,
base;
2628 std::vector<std::vector<int> > bases;
2629 for(
int t=0;t<vecs.size();t++)
2631 for(
int i=0;
i<mvs.size();
i++)
2634 for(
j=0;
j<nvs.size();
j++)
2638 base.push_back(vecs[t][
j]);
2647 if(
base.size()!=mvs.size())
2650 WerrorS(
"Errors in Equations solving (Values Finding)!");
2656 bases.push_back(
base);
2676 int i,
j, a=vecs.size();
2683 int b=vecs[0].size();
2711 std::vector<std::vector<int> > vecs=
supports(ids);
2727 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
2743 std::vector<int>
vec,solm;
2744 std::vector<std::vector<int> > solsm;
2748 for(
j=0;
j<
vec.size();
j++)
2751 solm.push_back(
vec[
j]);
2753 solsm.push_back(solm);
2778 tnv=
tnab(hvs,nv,sbv);
2779 for(
i=0;
i<tnv.size();
i++)
2782 bad.push_back(co+1);
2806 std::vector<int> su=
make1(n);
2807 std::vector<std::vector<int> > suu;
2842 std::vector<std::vector<int> >
solve;
2864 Print(
"Finished %d!\n",mm);
2873bool condition2for2nv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> fv)
2891std::vector<int>
findalphan(std::vector<std::vector<int> >
N, std::vector<int> tN)
2893 int i;std::vector<int> alset,
vec;
2894 for(
i=0;
i<
N.size();
i++)
2910std::vector<std::vector<int> >
subspacetn(std::vector<std::vector<int> >
N, std::vector<int> tN, std::vector<std::vector<int> > ntvs)
2914 std::vector<std::vector<int> > subases;
2915 for(
i=0;
i<alset.size();
i++)
2918 subases.push_back(subase);
2931std::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)
2934 std::vector<int> pv,qv,
base;
2935 std::vector<std::vector<int> > bases;
2942 for(
int t=0;t<vecs.size();t++)
2944 for(
int i=0;
i<mts.size();
i++)
2954 for(
j=0;
j<nts.size();
j++)
2958 if(
vEvl(pv,nvs[row])&&
vEvl(qv,nvs[col]))
2960 base.push_back(vecs[t][
j]);
break;
2962 else if(
vEvl(pv,nvs[col])&&
vEvl(qv,nvs[row]))
2964 base.push_back(-vecs[t][
j]);
break;
2967 if(
j==nts.size()) {
base.push_back(0);}
2970 if(
base.size()!=mts.size())
2972 WerrorS(
"Errors in Values Finding(value2)!");
2977 bases.push_back(
base);
2989 std::vector<std::vector<int> > hvs=
supports(
h),mv,mts;
2992 mts=
mabtv(hvs,mv,av,bv);
2993 std::vector<std::vector<poly> > pvs=
idMakei(mv,mts);
2995 for(
i=0;
i<pvs.size();
i++)
3014 std::vector<std::vector<int> > hvs=
supports(
h),nv,mv,mts,sbv,vecs,vars,ntvs,
solve;
3020 tnv=
tnab(hvs,nv,sbv);
3023 mts=
mabtv(hvs,mv,av,bv);
3030 ntvs=
nabtv( hvs, nv, av, bv);
3034 for(
int t0=0;t0<
l;t0++)
3041 vecs.push_back(
vec);
3044 for(
int t1=t0+1;t1<ntvs.size();t1++)
3046 for(
int t2=t1+1;t2<ntvs.size();t2++)
3048 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3056 vecs.push_back(
vec);
3069 std::vector<std::vector<int> > re=
getvector(id_re,
l);
3073 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3101std::vector<int> bv,av;
3102 std::vector<std::vector<int> >
solve;
3114 PrintS(
"This is a set according to current b:\n");
3131 Print(
"There are %d graded pieces in total.\n",
gp);
3140std::vector<int>
phimagel(std::vector<int> fv, std::vector<int> av, std::vector<int> bv)
3142 std::vector<int> nv;
3152std::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)
3155 std::vector<int> pv;
3156 std::vector<int>
base;
3157 std::vector<std::vector<int> > bases;
3158 for(
int t=0;t<vecs.size();t++)
3160 for(
int i=0;
i<mvs.size();
i++)
3163 for(
j=0;
j<lks.size();
j++)
3167 base.push_back(vecs[t][
j]);
break;
3172 if(
base.size()!=mvs.size())
3174 WerrorS(
"Errors in Values Finding(value1l)!");
3180 bases.push_back(
base);
3193 Print(
"The time of value matching for first order deformation: %.2f sec ;\n", ((
double)
t_value)/CLOCKS_PER_SEC);
3194 Print(
"The total time of fpiece: %.2f sec ;\n", ((
double)
t_total)/CLOCKS_PER_SEC);
3195 Print(
"The time of equations construction for fpiece: %.2f sec ;\n", ((
double)
t_construct)/CLOCKS_PER_SEC);
3196 Print(
"The total time of equations solving for fpiece: %.2f sec ;\n", ((
double)
t_solve)/CLOCKS_PER_SEC);
3197 PrintS(
"__________________________________________________________\n");
3202std::vector<std::vector<int> >
gpl(ideal
h,poly a,poly
b)
3205 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,good,
solve;
3218 tnv=
tnab(hvs,nv,sbv);
3219 for(
i=0;
i<tnv.size();
i++)
3222 bad.push_back(co+1);
3247 std::vector<int> su=
make1(n);
3248 std::vector<std::vector<int> > suu;
3279 nvl=
Nabv(lks,em,bv);
3295std::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)
3297 std::vector<int> pv,qv,
base;
3299 std::vector<std::vector<int> > bases;
3304 for(
int t=0;t<vecs.size();t++)
3306 for(
int i=0;
i<mts.size();
i++)
3316 for(
j=0;
j<lkts.size();
j++)
3320 if(
vEvl(pv,lks[row])&&
vEvl(qv,lks[col]))
3322 base.push_back(vecs[t][
j]);
break;
3324 else if(
vEvl(qv,lks[row])&&
vEvl(pv,lks[col]))
3326 base.push_back(-vecs[t][
j]);
break;
3335 if(
base.size()!=mts.size())
3337 WerrorS(
"Errors in Values Finding!");
3342 bases.push_back(
base);
3349std::vector<std::vector<int> >
gpl2(ideal
h,poly a,poly
b)
3352 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,mts,vecs,vars,ntvs,
solve;
3358 tnv=
tnab(hvs,nv,sbv);
3361 mts=
mabtv(hvs,mv,av,bv);
3364 ntvs=
nabtv( hvs, nv, av, bv);
3368 for(
int t0=0;t0<
l;t0++)
3375 vecs.push_back(
vec);
3378 for(
int t1=t0+1;t1<ntvs.size();t1++)
3380 for(
int t2=t1+1;t2<ntvs.size();t2++)
3382 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3390 vecs.push_back(
vec);
3400 std::vector<std::vector<int> > re=
getvector(id_re,
l);
3402 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3428 mts=
mabtv(hvs,mv,av,bv);
3432 nvl=
Nabv(lks,em,bv);
3434 ntsl=
nabtv(lks,nvl,em,bv);
3438 if(
solve.size() > 0)
3489 std::vector<int> pv;
3504std::vector<std::vector<int> >
triface(poly
p,
int vert)
3508 std::vector<std::vector<int> > fvs0, fvs;
3509 vec.push_back(vert);
3513 for(
i=0;
i<fvs0.size();
i++)
3516 vec.push_back(vert);
3533 std::vector<std::vector<int> > vecs=
supports(
h),vs,vs0;
3578 for(
i=0;
i<fv1.size();
i++)
3581 ev.push_back(fv1[
i]);
3606std::vector<std::vector<int> >
tetraface(poly
p, poly q,
int vert)
3610 std::vector<std::vector<int> > fvs1, fvs2, fvs;
3611 vec.push_back(vert);
3619 for(
i=0;
i<fvs2.size();
i++)
3622 vec.push_back(vert);
3634 std::vector<std::vector<int> > vecs=
supports(
h), vs1;
3649std::vector<std::vector<int> >
penface(poly
p, poly q, poly
g,
int vert)
3652 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);
3653 std::vector<std::vector<int> > fvs1, fvs2, fvs3, fvs, evec;
3654 evec.push_back(ev1);
3655 evec.push_back(ev2);
3656 evec.push_back(ev3);
3657 for(
i=0;
i<evec.size();
i++)
3659 if(evec[
i].
size()==2)
3666 vec.push_back(vert);
3676 for(
i=0;
i<evec.size();
i++)
3678 if(evec[
i].
size()==2)
3683 for(
i=0;
i<fvs3.size();
i++)
3686 vec.push_back(vert);
3699 std::vector<std::vector<int> > vecs=
supports(
h), vs1, evec;
3700 evec.push_back(ev1);
3701 evec.push_back(ev2);
3702 evec.push_back(ev3);
3703 for(
i=0;
i<evec.size();
i++)
3705 if(evec[
i].
size()==2)
3729 for(
i=0;
i<vecs.size();
i++)
3772std::vector<std::vector<int> >
vsMinusvs(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
3775 std::vector<std::vector<int> > vs=vs1;
3776 for(
i=0;
i<vs2.size();
i++)
3784std::vector<std::vector<int> >
vs_subsets(std::vector<std::vector<int> > vs)
3786 std::vector<std::vector<int> > sset, bv;
3787 for(
int i=0;
i<vs.size();
i++)
3815std::vector<std::vector<int> >
p_new(ideal Xo, ideal Sigma)
3833 fvs=
triface(Sigma->m[0], vert);
3837 fvs=
tetraface(Sigma->m[0], Sigma->m[1], vert);
3841 fvs=
penface(Sigma->m[0], Sigma->m[1], Sigma->m[2], vert);
3853 std::vector<int> ev;
3854 int ednum=vsig.size();
3857 vsig.push_back(
commonedge(sig->m[0], sig->m[1]));
3888std::vector<std::vector<int> >
phi1(poly a, ideal Sigma)
3892 for(
int i=0;
i<ss.size();
i++)
3895 if(
intvec.size()==av.size())
3906std::vector<std::vector<int> >
phi2(poly a, ideal Xo, ideal Sigma,
int vert)
3909 std::vector<std::vector<int> > ss=
p_new(Sigma, Xo), fvs;
3911 for(
int i=0;
i<ss.size();
i++)
3914 if(
intvec.size()==av.size())
3924std::vector<std::vector<int> >
links_new(poly a, ideal Xo, ideal Sigma,
int vert,
int ord)
3927 std::vector<std::vector<int> > lko, lkn, lk1, lk2;
3934 lk2=
phi2(a, Xo, Sigma, vert);
3941 lkn=
phi2(a, Xo, Sigma, vert);
3944 WerrorS(
"Cannot find the links smartly!");
3957 for(
int i=0;
i<bs.size();
i++)
3973 std::vector<int> vp, iv=
phimagel(
v, v1, v2);
3992 std::vector<int> v1=
phimagel(vp, va, vb), v2=
phimagel(vq, va, vb), v3=
phimagel(vf, va, vb), v4=
phimagel(vg, va, vb);
4023 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
4029std::vector<int>
v_minus(std::vector<int> v1, std::vector<int> v2)
4031 std::vector<int>
vec;
4032 for(
int i=0;
i<v1.size();
i++)
4034 vec.push_back(v1[
i]-v2[
i]);
4043 std::vector<int> av,bv;
4063std::vector<std::vector<int> >
star(poly a, ideal
h)
4066 std::vector<std::vector<int> > st,X=
supports(
h);
4068 for(
i=0;
i<X.size();
i++)
4083 std::vector<std::vector<int> > vecs;
4085 vecs.push_back(
vec);
4111 vec_n.push_back(vert);
4112 for(
i=0;
i<lk.size();
i++)
4115 vecs_minus.push_back(
vec);
4116 for(
j=0;
j<bys.size();
j++)
4120 vecs_plus.push_back(
vec);
4132 std::vector<std::vector<int> > bset;
4133 for(
int i=0;
i<bvs.size();
i++)
4135 for(
int j=0;
j!=
i;
j++)
4137 vs.push_back(bvs[
j]);
4152 ideal ai=
p_a(
h), bi;
4208 ideal hh=(ideal)
h->Data();
4225 ideal hh=(ideal)
h->Data();
4242 ideal hh=(ideal)
h->Data();
4255 ideal h1= (ideal)
h->Data();
4259 poly
p= (poly)
h->Data();
4263 poly q= (poly)
h->Data();
4297 poly
p= (poly)
h->Data();
4301 poly q= (poly)
h->Data();
4316 poly
p= (poly)
h->Data();
4320 poly q= (poly)
h->Data();
4336 ideal h1= (ideal)
h->Data();
4349 ideal h1= (ideal)
h->Data();
4363 ideal h1= (ideal)
h->Data();
4376 ideal h1= (ideal)
h->Data();
4380 poly
p= (poly)
h->Data();
4395 ideal h1= (ideal)
h->Data();
4399 poly q= (poly)
h->Data();
4403 int d= (int)(
long)
h->Data();
4418 ideal h1= (ideal)
h->Data();
4422 poly
p= (poly)
h->Data();
4426 poly q= (poly)
h->Data();
4441 ideal h1= (ideal)
h->Data();
4445 poly
p= (poly)
h->Data();
4449 poly q= (poly)
h->Data();
4453 int d= (int)(
long)
h->Data();
4470 ideal h1= (ideal)
h->Data();
4474 poly
p= (poly)
h->Data();
4478 poly q= (poly)
h->Data();
4493 ideal h1= (ideal)
h->Data();
4497 poly
p= (poly)
h->Data();
4501 poly q= (poly)
h->Data();
4516 ideal h1= (ideal)
h->Data();
4520 poly
p= (poly)
h->Data();
4524 poly q= (poly)
h->Data();
4539 poly
p= (poly)
h->Data();
4543 ideal h1= (ideal)
h->Data();
4545 std::vector<std::vector<int> > vecs=
links(
p,h1);
4557 ideal h1= (ideal)
h->Data();
4570 ideal h1= (ideal)
h->Data();
4574 poly
p= (poly)
h->Data();
4578 int d= (int)(
long)
h->Data();
4593 ideal h1= (ideal)
h->Data();
4597 poly
p= (poly)
h->Data();
4601 poly q= (poly)
h->Data();
4605 int d= (int)(
long)
h->Data();
4621 ideal h1= (ideal)
h->Data();
4625 poly
p= (poly)
h->Data();
4629 poly q= (poly)
h->Data();
4633 poly
g= (poly)
h->Data();
4637 int d= (int)(
long)
h->Data();
4655 std::vector<int> bset,bs;
4656 std::vector<std::vector<int> > gset;
4659 int n= (int)(
long)
h->Data();
4663 ideal bi= (ideal)
h->Data();
4667 ideal gi= (ideal)
h->Data();
4672 bset.push_back(bs[0]);
4673 else if(bs.size()==0)
4677 WerrorS(
"Errors in T^1 Equations Solving!");
4685 std::vector<std::vector<int> > vecs=
eli2(n,bset,gset);
4699 ideal h1= (ideal)
h->Data();
4715 ideal h1= (ideal)
h->Data();
4719 poly
p= (poly)
h->Data();
4735 ideal h1= (ideal)
h->Data();
4739 poly
p= (poly)
h->Data();
4743 poly q= (poly)
h->Data();
4745 std::vector<std::vector<int> > vecs=
supports(h1);
4761 ideal h1= (ideal)
h->Data();
4765 poly
p= (poly)
h->Data();
4769 poly q= (poly)
h->Data();
4771 std::vector<std::vector<int> > vecs=
supports(h1), sbv,tnbr;
4773 std::vector<std::vector<int> > nvs=
Nabv(vecs, pv, qv);
4776 std::vector<int> tnv =
tnab(vecs,nvs,sbv);
4777 for(
int i=0;
i<tnv.size();
i++)
4779 tnbr.push_back(nvs[tnv[
i]]);
4794 ideal h1= (ideal)
h->Data();
4798 ideal h2= (ideal)
h->Data();
4813 ideal h1= (ideal)
h->Data();
4817 poly
p= (poly)
h->Data();
4821 poly q= (poly)
h->Data();
4837 ideal h1= (ideal)
h->Data();
4841 poly
p= (poly)
h->Data();
4845 poly q= (poly)
h->Data();
4846 std::vector<std::vector<int> > hvs=
supports(h1), nv, ntvs;
4849 ntvs=
nabtv( hvs, nv, av, bv);
4850 std::vector<std::vector<poly> > pvs=
idMakei(nv,ntvs);
4852 for(
int i=0;
i<pvs.size();
i++)
4872 poly a= (poly)
h->Data();
4876 ideal Xo= (ideal)
h->Data();
4880 ideal Sigma= (ideal)
h->Data();
4884 int vert= (int)(
long)
h->Data();
4888 int ord= (int)(
long)
h->Data();
4906 poly
p= (poly)
h->Data();
4910 ideal h1= (ideal)
h->Data();
4924 ideal h1= (ideal)
h->Data();
4928 ideal h2= (ideal)
h->Data();
4941 ideal h1= (ideal)
h->Data();
4955 ideal h1= (ideal)
h->Data();
4959 ideal h2= (ideal)
h->Data();
4975 poly
p= (poly)
h->Data();
4992 poly
p= (poly)
h->Data();
5006 ideal h1= (ideal)
h->Data();
5010 poly
p= (poly)
h->Data();
5025 ideal h1= (ideal)
h->Data();
5029 poly
p= (poly)
h->Data();
5030 std::vector<std::vector<int> > st=
star(
p, h1);
5031 std::vector<std::vector<int> > hvs=
supports(h1);
5032 std::vector<std::vector<int> > re=
vsMinusvs(hvs, st);
5046 ideal h1= (ideal)
h->Data();
5050 ideal h2= (ideal)
h->Data();
5066 poly
p= (poly)
h->Data();
5070 ideal h1= (ideal)
h->Data();
5086 ideal h2= (ideal)
h->Data();
5090 poly
p= (poly)
h->Data();
5105 ideal h1= (ideal)
h->Data();
5109 ideal h2= (ideal)
h->Data();
5123 ideal h1= (ideal)
h->Data();
5127 ideal h2= (ideal)
h->Data();
5142 poly
p= (poly)
h->Data();
5146 ideal h1= (ideal)
h->Data();
5150 poly a= (poly)
h->Data();
5154 poly
b= (poly)
h->Data();
5171 poly
p= (poly)
h->Data();
5175 poly q= (poly)
h->Data();
5179 poly
f= (poly)
h->Data();
5183 poly
g= (poly)
h->Data();
5187 poly a= (poly)
h->Data();
5191 poly
b= (poly)
h->Data();
5209 poly
p= (poly)
h->Data();
5213 int num= (int)(
long)
h->Data();
5228 ideal h1= (ideal)
h->Data();
5242 ideal h1= (ideal)
h->Data();
5256 ideal h1= (ideal)
h->Data();
5260 int num= (int)(
long)
h->Data();
5276 p->iiAddCproc(
"",
"findbset",
FALSE,
fb);
5277 p->iiAddCproc(
"",
"findaset",
FALSE,
fa);
const CanonicalForm CFMap CFMap & N
bool solve(int **extmat, int nrows, int ncols)
Class used for (list of) interpreter objects.
Coefficient rings, fields and other domains suitable for Singular polynomials.
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 ....
static FORCE_INLINE coeffs nCopyCoeff(const coeffs r)
"copy" coeffs, i.e. increment ref
void lpprint(std::vector< poly > pv)
std::vector< int > v_minus(std::vector< int > v1, std::vector< int > v2)
BOOLEAN idModulo(leftv res, leftv args)
BOOLEAN pa(leftv res, leftv args)
std::vector< int > phimagel(std::vector< int > fv, std::vector< int > av, std::vector< int > bv)
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< 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 sgpl(leftv res, leftv args)
BOOLEAN nfaces1(leftv res, leftv args)
std::vector< int > findalpha(std::vector< std::vector< int > > mv, std::vector< int > bv)
std::vector< int > vecMinus(std::vector< int > vec1, std::vector< int > vec2)
intvec * gradedpiece2nl(ideal h, poly a, poly b)
std::vector< std::vector< int > > id_subsets(std::vector< std::vector< int > > vecs)
std::vector< int > ofindbases1(int num, int vnum, std::vector< int > bset, std::vector< std::vector< int > > gset)
BOOLEAN psMinusp(leftv res, leftv args)
ideal mingens(ideal h, poly a, poly b)
std::vector< std::vector< int > > minisolve(std::vector< std::vector< int > > solve, std::vector< int > index)
std::vector< std::vector< int > > ofindbases(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
std::vector< std::vector< int > > p_constant(ideal Xo, ideal Sigma)
std::vector< int > vecUnion(std::vector< int > vec1, std::vector< int > vec2)
BOOLEAN nfaces3(leftv res, leftv args)
ideal triangulations2(ideal h, poly p, poly q, int vert)
std::vector< std::vector< int > > Mabv(ideal h, poly a, poly b)
BOOLEAN cNew(leftv res, leftv args)
std::vector< int > numfree(ideal h)
std::vector< std::vector< int > > links(poly a, ideal h)
BOOLEAN isoNumber(leftv res, leftv args)
bool condition1for2(std::vector< int > pv, std::vector< int > qv, std::vector< int > bv)
ideal idMake3(std::vector< std::vector< int > > vecs)
std::vector< std::vector< int > > b_subsets(std::vector< int > vec)
poly pMake(std::vector< int > vbase)
BOOLEAN pb(leftv res, leftv args)
BOOLEAN fgp(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)
std::vector< std::vector< int > > vsMinusv(std::vector< std::vector< int > > vecs, std::vector< int > vec)
std::vector< int > tnab(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > bvs)
bool vEvl(std::vector< int > vec1, std::vector< int > vec2)
bool IsInX(poly p, ideal X)
std::vector< std::vector< int > > gpl2(ideal h, poly a, poly b)
BOOLEAN fa(leftv res, leftv args)
std::vector< std::vector< int > > vsMinusvs(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
BOOLEAN ifIsomorphism(leftv res, leftv args)
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 > > phi1(poly a, ideal Sigma)
std::vector< int > support2(poly p)
int existIn(poly b, ideal Xs)
std::vector< std::vector< int > > vecqring(std::vector< std::vector< int > > vec1, std::vector< std::vector< int > > vec2)
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)
std::vector< std::vector< int > > tetraface(poly p, poly q, int vert)
std::vector< int > eli1(std::vector< int > eq1, std::vector< int > eq2)
BOOLEAN tnabvl(leftv res, leftv args)
ideal qringadd(ideal h1, ideal h2, int deg)
std::vector< std::vector< int > > Nabv(std::vector< std::vector< int > > hvs, std::vector< int > av, std::vector< int > bv)
bool vInvsl(std::vector< int > vec, std::vector< std::vector< int > > vecs)
intvec * dmat(poly a, poly b)
BOOLEAN genstt(leftv res, leftv args)
BOOLEAN Links(leftv res, leftv args)
intvec * Tmat(std::vector< std::vector< int > > vecs)
ideal genst(ideal h, poly a, poly b)
int num4dim(ideal h, int n)
BOOLEAN idcomplement(leftv res, leftv args)
BOOLEAN p_New(leftv res, leftv args)
ideal triangulations1(ideal h, poly p, int vert)
std::vector< std::vector< int > > vAbsorb(std::vector< int > bset, std::vector< std::vector< int > > gset)
BOOLEAN fgpl(leftv res, leftv args)
ideal idmodulo(ideal h1, ideal h2)
BOOLEAN SRideal(leftv res, leftv args)
std::vector< std::vector< int > > stellarsub(poly a, ideal h)
ideal idMinusp(ideal I, poly p)
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)
BOOLEAN linkn(leftv res, leftv args)
int isoNum(poly p, ideal I, poly a, poly b)
ideal c_New(ideal Io, ideal sig)
BOOLEAN newDegree(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)
BOOLEAN idsr(leftv res, leftv args)
BOOLEAN isSim(leftv res, leftv args)
std::vector< std::vector< int > > penface(poly p, poly q, poly g, int vert)
ideal sfreemon(ideal h, int deg)
poly pMake3(std::vector< int > vbase)
std::vector< std::vector< int > > bsubsets_1(poly b)
BOOLEAN Valency(leftv res, leftv args)
bool nabtconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > av, std::vector< int > bv)
BOOLEAN sgp(leftv res, leftv args)
bool vEv(std::vector< int > vec1, std::vector< int > vec2)
std::vector< std::vector< int > > listsinsertlist(std::vector< std::vector< int > > gset, int a, int b)
BOOLEAN pChange(leftv res, leftv args)
void lpsprint(std::vector< std::vector< poly > > pvs)
void firstorderdef_setup(SModulFunctions *p)
BOOLEAN gd(leftv res, leftv args)
std::vector< int > vertset(std::vector< std::vector< int > > vecs)
BOOLEAN makeSimplex(leftv res, leftv args)
BOOLEAN stellarremain(leftv res, leftv args)
std::vector< int > vMake(poly p)
BOOLEAN bprime(leftv res, leftv args)
ideal p_b(ideal h, poly a)
std::vector< int > findalphan(std::vector< std::vector< int > > N, std::vector< int > tN)
ideal getpresolve(ideal h)
ideal finda(ideal h, poly S, int ddeg)
std::vector< int > gdegree(poly a, poly b)
std::vector< int > commonedge(poly p, poly q)
ideal id_complement(ideal h)
BOOLEAN vsIntersec(leftv res, leftv args)
std::vector< int > gensindex(ideal M, ideal ids)
std::vector< std::vector< int > > p_change(ideal Sigma)
std::vector< std::vector< int > > vs_subsets(std::vector< std::vector< int > > vs)
std::vector< std::vector< int > > phi2(poly a, ideal Xo, ideal Sigma, int vert)
BOOLEAN tsets(leftv res, leftv args)
int ifIso(poly p, poly q, poly f, poly g, poly a, poly b)
static void TimeShow(clock_t t_construct, clock_t t_solve, clock_t t_value, clock_t t_total)
BOOLEAN numdim(leftv res, leftv args)
BOOLEAN pConstant(leftv res, leftv args)
bool IsinL(int a, std::vector< int > vec)
bool condition2for2nv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > fv)
std::vector< std::vector< int > > subspacetn(std::vector< std::vector< int > > N, std::vector< int > tN, std::vector< std::vector< int > > ntvs)
std::vector< int > keeporder(std::vector< int > vec)
BOOLEAN nabvl(leftv res, leftv args)
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 > > vsUnion(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
BOOLEAN support(leftv res, leftv args)
void listprint(std::vector< int > vec)
int valency(ideal h, poly p)
BOOLEAN existsub(leftv res, leftv args)
std::vector< int > subspace1(std::vector< std::vector< int > > mv, std::vector< int > bv)
BOOLEAN stellarsubdivision(leftv res, leftv args)
bool tNab(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< std::vector< int > > bvs)
std::vector< std::vector< int > > links_new(poly a, ideal Xo, ideal Sigma, int vert, int ord)
poly pMaken(std::vector< int > vbase)
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 dimsim(leftv res, leftv args)
ideal idMinus(ideal h1, ideal h2)
std::vector< std::vector< int > > soleli1(std::vector< std::vector< int > > eqs)
BOOLEAN comedg(leftv res, leftv args)
std::vector< int > vecIntersection(std::vector< int > p, std::vector< int > q)
std::vector< int > make1(int n)
intvec * gradedpiece2n(ideal h, poly a, poly b)
int SI_MOD_INIT() cohomo(SModulFunctions *p)
intvec * gradedpiece1n(ideal h, poly a, poly b)
ideal triangulations3(ideal h, poly p, poly q, poly g, int vert)
int vInvs(std::vector< int > vec, std::vector< std::vector< int > > vecs)
bool nabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
intvec * edgemat(poly p, poly q)
BOOLEAN nfaces2(leftv res, leftv args)
std::vector< std::vector< int > > canonicalbase(int n)
std::vector< int > subspacet1(int num, std::vector< std::vector< int > > ntvs)
std::vector< int > fvarsvalue(int vnum, std::vector< int > fvars)
BOOLEAN stars(leftv res, leftv args)
std::vector< std::vector< int > > vsMake(ideal h)
std::vector< std::vector< int > > triface(poly p, int vert)
BOOLEAN fb(leftv res, leftv args)
std::vector< std::vector< int > > p_new(ideal Xo, ideal Sigma)
std::vector< std::vector< poly > > idMakei(std::vector< std::vector< int > > mv, std::vector< std::vector< int > > vecs)
BOOLEAN idminus(leftv res, leftv args)
std::vector< int > freevars(int n, std::vector< int > bset, std::vector< std::vector< int > > gset)
intvec * gradedpiece1nl(ideal h, poly a, poly b, int set)
std::vector< int > vecbase1(int num, std::vector< int > oset)
std::vector< std::vector< int > > eli2(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
std::vector< int > make0(int n)
bool vsubset(std::vector< int > vec1, std::vector< int > vec2)
ideal idadda(ideal h1, ideal h2)
ideal complementsimplex(ideal h)
ideal idMake(std::vector< std::vector< int > > vecs)
std::vector< std::vector< int > > supports(ideal h)
std::vector< std::vector< int > > star(poly a, ideal h)
std::vector< poly > pMakei(std::vector< std::vector< int > > mv, std::vector< int > vbase)
int redefinedeg(poly p, int num)
BOOLEAN nonf2f(leftv res, leftv args)
std::vector< std::vector< int > > vsIntersection(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
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)
ideal idMaken(std::vector< std::vector< int > > vecs)
void gradedpiece1(ideal h, poly a, poly b)
std::vector< std::vector< int > > getvector(ideal h, int n)
std::vector< int > makeequation(int i, int j, int t)
ideal makemab(ideal h, poly a, poly b)
std::vector< std::vector< int > > boundary(poly a)
BOOLEAN mabvl(leftv res, leftv args)
std::vector< std::vector< int > > gpl(ideal h, poly a, poly b)
std::vector< std::vector< int > > supports2(ideal h)
BOOLEAN nabtvl(leftv res, leftv args)
BOOLEAN t1h(leftv res, leftv args)
std::vector< int > phimage(std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
std::vector< int > support1(poly p)
void listsprint(std::vector< std::vector< int > > posMat)
BOOLEAN eqsolve1(leftv res, leftv args)
void gradedpiece2(ideal h, poly a, poly b)
const CanonicalForm int s
const Variable & v
< [in] a sqrfree bivariate poly
static int max(int a, int b)
void WerrorS(const char *s)
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
ideal idAdd(ideal h1, ideal h2)
h1 + h2
#define IMATELEM(M, I, J)
idhdl ggetid(const char *n)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv args)
INST_VAR sleftv iiRETURNEXPR
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
void rem(unsigned long *a, unsigned long *q, unsigned long p, int °a, int degq)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
The main handler for Singular numbers which are suitable for Singular polynomials.
static int index(p_Length length, p_Ord ord)
poly p_Subst(poly p, int n, poly e, const ring r)
BOOLEAN p_EqualPolys(poly p1, poly p2, const ring r)
static poly pp_Mult_mm(poly p, poly m, const ring r)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent @Note: the integer VarOffset encodes:
static BOOLEAN p_DivisibleBy(poly a, poly b, const ring r)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
static long pTotaldegree(poly p)
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
#define pGetExp(p, i)
Exponent.
#define pEqualPolys(p1, p2)
#define pCopy(p)
return a copy of the poly
void PrintS(const char *s)
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
static short rVar(const ring r)
#define rVar(r) (r->N)
ideal id_Add(ideal h1, ideal h2, const ring r)
h1 + h2
ideal idInit(int idsize, int rank)
initialise an ideal / module
ideal id_MaxIdeal(const ring r)
initialise the maximal ideal (at 0)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size