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;
943 ideal h1,mons,id_re=
idInit(1,1);
999 id_so=
idadda(id_so, id_re);
1113 std::vector<std::vector<int> > hvs=
supports(
h);
1119 if(
vInvsl(
v,hvs)&&in.size()==0)
1140bool mabconditionv(std::vector<std::vector<int> > hvs,std::vector<int> pv,std::vector<int> av,std::vector<int> bv)
1142 std::vector<int> uv=
vecUnion(pv,av);
1153std::vector<std::vector<int> >
Mabv(ideal
h,poly a,poly
b)
1158 for(
int i=0;
i<h2v.size();
i++)
1186std::vector<int>
eli1(std::vector<int> eq1,std::vector<int> eq2)
1189 std::vector<int> eq;
1231 std::vector<int> yaya;
1243std::vector<std::vector<int> >
soleli1( std::vector<std::vector<int> > eqs)
1246 std::vector<int> yaya;
1247 std::vector<std::vector<int> > pre=eqs, ppre, re;
1250 re.push_back(eqs[0]);
1251 pre.erase(pre.begin());
1256 for(
i=1;
i<re.size();
i++)
1260 yaya=
eli1(re[
i],yaya);
1268 pre.erase(pre.begin());
1278std::vector<int>
freevars(
int n, std::vector<int> bset, std::vector<std::vector<int> > gset)
1280 int ql=gset.size(), bl=bset.size(),
i;
1281 std::vector<int>
mvar, fvar;
1284 mvar.push_back(bset[
i]);
1288 mvar.push_back(gset[
i][0]);
1305 std::vector<int> fset=fvars;
1306 for(
i=0;
i<fset.size();
i++)
1310 fset.erase(fset.begin()+
i);
1322std::vector<std::vector<int> >
vAbsorb( std::vector<int> bset,std::vector<std::vector<int> > gset)
1324 std::vector<int> badset=bset;
1325 int i,
j,
m, bl=bset.size(), gl=gset.size();
1331 if(gset[
j][0]==
m && !
IsinL(gset[
j][1],badset))
1333 badset.push_back(gset[
j][1]);
1334 gset.erase(gset.begin()+
j);
1339 else if(!
IsinL(gset[
j][0],badset) && gset[
j][1]==
m)
1341 badset.push_back(gset[
j][0]);
1342 gset.erase(gset.begin()+
j);
1347 else if(
IsinL(gset[
j][0],badset) &&
IsinL(gset[
j][1],badset))
1349 gset.erase(gset.begin()+
j);
1359 if(badset.size()==0) badset.push_back(0);
1360 gset.push_back(badset);
1374 std::vector<int>
base;
1392 std::vector<int>
vec;
1406 std::vector<int>
vec;
1419std::vector<int>
ofindbases1(
int num,
int vnum, std::vector<int> bset,std::vector<std::vector<int> > gset)
1421 std::vector<std::vector<int> > goodset;
1423 std::vector<int> zset=
fvarsvalue(vnum, fvars);
1425 oset.push_back(vnum);
1427 oset=goodset[goodset.size()-1];
1428 goodset.erase(goodset.end());
1442std::vector<std::vector<int> >
ofindbases(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1445 std::vector<std::vector<int> > bases;
1446 std::vector<int> fvars=
freevars(
num, bset, gset), base1;
1447 if (fvars.size()==0)
1450 bases.push_back(base1);
1454 for(
i=0;
i<fvars.size();
i++)
1458 bases.push_back(base1);
1476std::vector<std::vector<int> >
eli2(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1478 std::vector<int> badset;
1479 std::vector<std::vector<int> > goodset,
solve;
1489 int m=goodset.size();
1490 badset=goodset[
m-1];
1491 goodset.erase(goodset.end());
1524std::vector<std::vector<int> >
links(poly a, ideal
h)
1527 std::vector<std::vector<int> > lk,X=
supports(
h);
1528 std::vector<int> U,In,av=
support1(a);
1529 for(
i=0;
i<X.size();
i++)
1533 if( In.size()==0 &&
vInvsl(U,X))
1575 std::vector<int> as;
1576 std::vector<std::vector<int> > hvs=
supports(
h);
1642std::vector<std::vector<int> >
id_subsets(std::vector<std::vector<int> > vecs)
1645 std::vector<std::vector<int> > vvs,
res;
1646 for(
i=0;
i<vecs.size();
i++)
1650 for(
j=0;
j<vvs.size();
j++)
1653 res.push_back(vvs[
j]);
1663std::vector<int>
vertset(std::vector<std::vector<int> > vecs)
1666 std::vector<int> vert;
1667 std::vector<std::vector<int> > vvs;
1670 for(
j=0;
j<vecs.size();
j++)
1688 std::vector<std::vector<int> > pbv,lk=
links(a,
h),
res;
1689 std::vector<int> vert=
vertset(lk), bv;
1694 for(
i=0;
i<
res.size();
i++)
1697 pbv.push_back(
res[
i]);
1804 ideal h1,mons, id_re=
idInit(1,1);
1825std::vector<std::vector<int> >
listsinsertlist(std::vector<std::vector<int> > gset,
int a,
int b)
1827 std::vector<int> eq;
1840 std::vector<int> equation;
1841 equation.push_back(
i);
1842 equation.push_back(
j);
1843 equation.push_back(t);
1859 for(
int i=0;
i<3;
i++)
1878 int i,lv=vecs.size();
1902 sprintf (tt[
i],
"t(%d)",
i+1);
1914std::vector<int>
subspace1(std::vector<std::vector<int> > mv, std::vector<int> bv)
1916 int i,
num=mv.size();
1917 std::vector<int>
base;
1940std::vector<poly>
pMakei(std::vector<std::vector<int> > mv,std::vector<int> vbase)
1943 std::vector<poly> h1;
1945 for(
int i=0;
i<n;
i++)
1956 std::vector<std::vector<poly> >
idMakei(std::vector<std::vector<int> > mv,std::vector<std::vector<int> > vecs)
1958 int i,lv=vecs.size();
1959 std::vector<std::vector<poly> > re;
1960 std::vector<poly>
h;
2027 std::vector<std::vector<int> > suu;
2038 PrintS(
"No element considered!\n");
2074bool 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)
2092bool condition3for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
2094 std::vector<int> v1,v2,v3;
2128 WerrorS(
"presolve.lib are not loaded!");
2138 ideal re=(ideal)L->
m[4].
CopyD();
2152 std::vector<int> fvar;
2174 std::vector<std::vector<int> > vecs;
2175 std::vector<int>
vec;
2186 vecs.push_back(
vec);
2198 std::vector<int>
vec;
2199 std::vector<std::vector<int> > vecs;
2206 std::vector<int> fvar=
numfree(h1);
2247 vecs.push_back(
vec);
2270std::vector<int>
findalpha(std::vector<std::vector<int> > mv, std::vector<int> bv)
2272 std::vector<int> alset;
2273 for(
int i=0;
i<mv.size();
i++)
2294 int i,
j, t, n=ntvs.size();
2295 std::vector<int> subase;
2302 subase.push_back(1);
2306 subase.push_back(-1);
2310 subase.push_back(0);
2322std::vector<std::vector<int> >
subspacet(std::vector<std::vector<int> > mv, std::vector<int> bv,std::vector<std::vector<int> > ntvs)
2324 std::vector<int> alset=
findalpha(mv,bv), subase;
2325 std::vector<std::vector<int> > subases;
2326 for(
unsigned i=0;
i<alset.size();
i++)
2329 subases.push_back(subase);
2340std::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)
2342 std::vector<int> v1,var;
2343 std::vector<std::vector<int> > vars;
2344 for(
int i=0;
i<Mv.size();
i++)
2346 for(
int j=
i+1;
j<Mv.size();
j++)
2354 vars.push_back(var);
2368 int t0,t1,t2,
i,
j,t,
m;
2371 std::vector<std::vector<int> > hvs=
supports(
h), mv=
Mabv(
h,a,
b), mts, vecs,vars;
2373 mts=
mabtv(hvs,mv,av,bv);
2374 PrintS(
"The homomorphism should map onto:\n");
2379 vars=
mabtv(hvs,mv,av,bv);
2381 for(t0=0;t0<vars.size();t0++)
2392 vecs.push_back(
vec);
2402 vecs.push_back(
vec);
2405 for(t1=t0+1;t1<vars.size();t1++)
2407 for(t2=t1+1;t2<vars.size();t2++)
2409 if(vars[t0][0]==vars[t1][0]&&vars[t1][1]==vars[t2][1]&&vars[t0][1]==vars[t2][0])
2417 vecs.push_back(
vec);
2429 std::vector<std::vector<int> > re=
getvector(id_re,vn);
2430 PrintS(
"this is the solution for ideal :\n");
2433 std::vector<std::vector<int> > sub=
subspacet(mv, bv,vars);
2434 PrintS(
"this is the solution for subspace:\n");
2438 PrintS(
"This is the solution of coefficients:\n");
2444 PrintS(
"No element considered!");
2480bool nabconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2499std::vector<std::vector<int> >
Nabv(std::vector<std::vector<int> > hvs, std::vector<int> av, std::vector<int> bv)
2501 std::vector<std::vector<int> > vecs;
2508 vecs.push_back(hvs[
i]);
2521static bool nabtconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv)
2523 std::vector<int> v1;
2534std::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)
2536 std::vector<int> v1,var;
2537 std::vector<std::vector<int> > vars;
2538 for(
int i=0;
i<Nv.size();
i++)
2540 for(
int j=
i+1;
j<Nv.size();
j++)
2547 vars.push_back(var);
2565bool tNab(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<std::vector<int> > bvs)
2567 std::vector<int> sv;
2568 if(bvs.size()<=1)
return false;
2569 for(
int i=0;
i<bvs.size();
i++)
2586std::vector<int>
tnab(std::vector<std::vector<int> > hvs,std::vector<std::vector<int> > nvs,std::vector<std::vector<int> > bvs)
2588 std::vector<int> pv,
vec;
2589 for(
int j=0;
j<nvs.size();
j++)
2592 if(
tNab(hvs, pv, bvs))
2608std::vector<int>
phimage(std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2610 std::vector<int> qv=
vecUnion(pv,av);
2619std::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)
2622 std::vector<int> pv,
base;
2623 std::vector<std::vector<int> > bases;
2624 for(
int t=0;t<vecs.size();t++)
2626 for(
int i=0;
i<mvs.size();
i++)
2629 for(
j=0;
j<nvs.size();
j++)
2633 base.push_back(vecs[t][
j]);
2642 if(
base.size()!=mvs.size())
2645 WerrorS(
"Errors in Equations solving (Values Finding)!");
2651 bases.push_back(
base);
2671 int i,
j, a=vecs.size();
2678 int b=vecs[0].size();
2706 std::vector<std::vector<int> > vecs=
supports(ids);
2722 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
2738 std::vector<int>
vec,solm;
2739 std::vector<std::vector<int> > solsm;
2743 for(
j=0;
j<
vec.size();
j++)
2746 solm.push_back(
vec[
j]);
2748 solsm.push_back(solm);
2773 tnv=
tnab(hvs,nv,sbv);
2774 for(
i=0;
i<tnv.size();
i++)
2777 bad.push_back(co+1);
2801 std::vector<int> su=
make1(n);
2802 std::vector<std::vector<int> > suu;
2837 std::vector<std::vector<int> >
solve;
2859 Print(
"Finished %d!\n",mm);
2868bool condition2for2nv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> fv)
2886std::vector<int>
findalphan(std::vector<std::vector<int> >
N, std::vector<int> tN)
2888 int i;std::vector<int> alset,
vec;
2889 for(
i=0;
i<
N.size();
i++)
2905std::vector<std::vector<int> >
subspacetn(std::vector<std::vector<int> >
N, std::vector<int> tN, std::vector<std::vector<int> > ntvs)
2909 std::vector<std::vector<int> > subases;
2910 for(
i=0;
i<alset.size();
i++)
2913 subases.push_back(subase);
2926std::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)
2929 std::vector<int> pv,qv,
base;
2930 std::vector<std::vector<int> > bases;
2937 for(
int t=0;t<vecs.size();t++)
2939 for(
int i=0;
i<mts.size();
i++)
2949 for(
j=0;
j<nts.size();
j++)
2953 if(
vEvl(pv,nvs[row])&&
vEvl(qv,nvs[col]))
2955 base.push_back(vecs[t][
j]);
break;
2957 else if(
vEvl(pv,nvs[col])&&
vEvl(qv,nvs[row]))
2959 base.push_back(-vecs[t][
j]);
break;
2962 if(
j==nts.size()) {
base.push_back(0);}
2965 if(
base.size()!=mts.size())
2967 WerrorS(
"Errors in Values Finding(value2)!");
2972 bases.push_back(
base);
2983 std::vector<std::vector<int> > hvs=
supports(
h),mv,mts;
2986 mts=
mabtv(hvs,mv,av,bv);
2987 std::vector<std::vector<poly> > pvs=
idMakei(mv,mts);
2989 for(
unsigned i=0;
i<pvs.size();
i++)
3008 std::vector<std::vector<int> > hvs=
supports(
h),nv,mv,mts,sbv,vecs,vars,ntvs,
solve;
3014 tnv=
tnab(hvs,nv,sbv);
3017 mts=
mabtv(hvs,mv,av,bv);
3024 ntvs=
nabtv( hvs, nv, av, bv);
3028 for(
int t0=0;t0<
l;t0++)
3035 vecs.push_back(
vec);
3038 for(
int t1=t0+1;t1<ntvs.size();t1++)
3040 for(
int t2=t1+1;t2<ntvs.size();t2++)
3042 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3050 vecs.push_back(
vec);
3063 std::vector<std::vector<int> > re=
getvector(id_re,
l);
3067 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3095std::vector<int> bv,av;
3096 std::vector<std::vector<int> >
solve;
3108 PrintS(
"This is a set according to current b:\n");
3126 Print(
"There are %d graded pieces in total.\n",
gp);
3135std::vector<int>
phimagel(std::vector<int> fv, std::vector<int> av, std::vector<int> bv)
3137 std::vector<int> nv;
3147std::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)
3150 std::vector<int> pv;
3151 std::vector<int>
base;
3152 std::vector<std::vector<int> > bases;
3153 for(
int t=0;t<vecs.size();t++)
3155 for(
int i=0;
i<mvs.size();
i++)
3158 for(
j=0;
j<lks.size();
j++)
3162 base.push_back(vecs[t][
j]);
break;
3167 if(
base.size()!=mvs.size())
3169 WerrorS(
"Errors in Values Finding(value1l)!");
3175 bases.push_back(
base);
3188 Print(
"The time of value matching for first order deformation: %.2f sec ;\n", ((
double)
t_value)/CLOCKS_PER_SEC);
3189 Print(
"The total time of fpiece: %.2f sec ;\n", ((
double)
t_total)/CLOCKS_PER_SEC);
3190 Print(
"The time of equations construction for fpiece: %.2f sec ;\n", ((
double)
t_construct)/CLOCKS_PER_SEC);
3191 Print(
"The total time of equations solving for fpiece: %.2f sec ;\n", ((
double)
t_solve)/CLOCKS_PER_SEC);
3192 PrintS(
"__________________________________________________________\n");
3197std::vector<std::vector<int> >
gpl(ideal
h,poly a,poly
b)
3200 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,good,
solve;
3213 tnv=
tnab(hvs,nv,sbv);
3214 for(
i=0;
i<tnv.size();
i++)
3217 bad.push_back(co+1);
3242 std::vector<int> su=
make1(n);
3243 std::vector<std::vector<int> > suu;
3273 nvl=
Nabv(lks,em,bv);
3289std::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)
3291 std::vector<int> pv,qv,
base;
3293 std::vector<std::vector<int> > bases;
3298 for(
int t=0;t<vecs.size();t++)
3300 for(
int i=0;
i<mts.size();
i++)
3310 for(
j=0;
j<lkts.size();
j++)
3314 if(
vEvl(pv,lks[row])&&
vEvl(qv,lks[col]))
3316 base.push_back(vecs[t][
j]);
break;
3318 else if(
vEvl(qv,lks[row])&&
vEvl(pv,lks[col]))
3320 base.push_back(-vecs[t][
j]);
break;
3329 if(
base.size()!=mts.size())
3331 WerrorS(
"Errors in Values Finding!");
3336 bases.push_back(
base);
3343std::vector<std::vector<int> >
gpl2(ideal
h,poly a,poly
b)
3346 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,mts,vecs,vars,ntvs,
solve;
3352 tnv=
tnab(hvs,nv,sbv);
3355 mts=
mabtv(hvs,mv,av,bv);
3358 ntvs=
nabtv( hvs, nv, av, bv);
3362 for(
int t0=0;t0<
l;t0++)
3369 vecs.push_back(
vec);
3372 for(
int t1=t0+1;t1<ntvs.size();t1++)
3374 for(
int t2=t1+1;t2<ntvs.size();t2++)
3376 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
3384 vecs.push_back(
vec);
3394 std::vector<std::vector<int> > re=
getvector(id_re,
l);
3396 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
3421 mts=
mabtv(hvs,mv,av,bv);
3425 nvl=
Nabv(lks,em,bv);
3427 ntsl=
nabtv(lks,nvl,em,bv);
3431 if(
solve.size() > 0)
3482 std::vector<int> pv;
3497std::vector<std::vector<int> >
triface(poly
p,
int vert)
3500 std::vector<std::vector<int> > fvs0, fvs;
3501 vec.push_back(vert);
3505 for(
unsigned i=0;
i<fvs0.size();
i++)
3508 vec.push_back(vert);
3519 std::vector<std::vector<int> > vecs=
supports(
h),vs,vs0;
3563 for(
unsigned i=0;
i<fv1.size();
i++)
3566 ev.push_back(fv1[
i]);
3591std::vector<std::vector<int> >
tetraface(poly
p, poly q,
int vert)
3594 std::vector<std::vector<int> > fvs1, fvs2, fvs;
3595 vec.push_back(vert);
3603 for(
unsigned i=0;
i<fvs2.size();
i++)
3606 vec.push_back(vert);
3617 std::vector<std::vector<int> > vecs=
supports(
h), vs1;
3632std::vector<std::vector<int> >
penface(poly
p, poly q, poly
g,
int vert)
3635 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);
3636 std::vector<std::vector<int> > fvs1, fvs2, fvs3, fvs, evec;
3637 evec.push_back(ev1);
3638 evec.push_back(ev2);
3639 evec.push_back(ev3);
3640 for(
unsigned i=0;
i<evec.size();
i++)
3642 if(evec[
i].
size()==2)
3649 vec.push_back(vert);
3659 for(
unsigned i=0;
i<evec.size();
i++)
3661 if(evec[
i].
size()==2)
3666 for(
unsigned i=0;
i<fvs3.size();
i++)
3669 vec.push_back(vert);
3681 std::vector<std::vector<int> > vecs=
supports(
h), vs1, evec;
3682 evec.push_back(ev1);
3683 evec.push_back(ev2);
3684 evec.push_back(ev3);
3685 for(
unsigned i=0;
i<evec.size();
i++)
3687 if(evec[
i].
size()==2)
3711 for(
unsigned i=0;
i<vecs.size();
i++)
3754std::vector<std::vector<int> >
vsMinusvs(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
3756 std::vector<std::vector<int> > vs=vs1;
3757 for(
unsigned i=0;
i<vs2.size();
i++)
3765std::vector<std::vector<int> >
vs_subsets(std::vector<std::vector<int> > vs)
3767 std::vector<std::vector<int> > sset, bv;
3768 for(
unsigned i=0;
i<vs.size();
i++)
3796std::vector<std::vector<int> >
p_new(ideal Xo, ideal Sigma)
3814 fvs=
triface(Sigma->m[0], vert);
3818 fvs=
tetraface(Sigma->m[0], Sigma->m[1], vert);
3822 fvs=
penface(Sigma->m[0], Sigma->m[1], Sigma->m[2], vert);
3833 std::vector<int> ev;
3834 int ednum=vsig.size();
3837 vsig.push_back(
commonedge(sig->m[0], sig->m[1]));
3868std::vector<std::vector<int> >
phi1(poly a, ideal Sigma)
3872 for(
unsigned i=0;
i<ss.size();
i++)
3875 if(
intvec.size()==av.size())
3886static std::vector<std::vector<int> >
phi2(poly a, ideal Xo, ideal Sigma)
3889 std::vector<std::vector<int> > ss=
p_new(Sigma, Xo), fvs;
3891 for(
int i=0;
i<ss.size();
i++)
3894 if(
intvec.size()==av.size())
3904std::vector<std::vector<int> >
links_new(poly a, ideal Xo, ideal Sigma,
int vert,
int ord)
3907 std::vector<std::vector<int> > lko, lkn, lk1, lk2;
3914 lk2=
phi2(a, Xo, Sigma);
3921 lkn=
phi2(a, Xo, Sigma);
3924 WerrorS(
"Cannot find the links smartly!");
3937 for(
unsigned i=0;
i<bs.size();
i++)
3953 std::vector<int> vp, iv=
phimagel(
v, v1, v2);
3971 std::vector<int> v1=
phimagel(vp, va, vb), v2=
phimagel(vq, va, vb), v3=
phimagel(vf, va, vb), v4=
phimagel(vg, va, vb);
4002 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
4008std::vector<int>
v_minus(std::vector<int> v1, std::vector<int> v2)
4010 std::vector<int>
vec;
4011 for(
unsigned i=0;
i<v1.size();
i++)
4013 vec.push_back(v1[
i]-v2[
i]);
4022 std::vector<int> av,bv;
4042std::vector<std::vector<int> >
star(poly a, ideal
h)
4045 std::vector<std::vector<int> > st,X=
supports(
h);
4047 for(
i=0;
i<X.size();
i++)
4062 std::vector<std::vector<int> > vecs;
4064 vecs.push_back(
vec);
4090 vec_n.push_back(vert);
4091 for(
i=0;
i<lk.size();
i++)
4094 vecs_minus.push_back(
vec);
4095 for(
j=0;
j<bys.size();
j++)
4099 vecs_plus.push_back(
vec);
4111 std::vector<std::vector<int> > bset;
4112 for(
int i=0;
i<bvs.size();
i++)
4114 for(
int j=0;
j!=
i;
j++)
4116 vs.push_back(bvs[
j]);
4131 ideal ai=
p_a(
h), bi;
4187 ideal hh=(ideal)
h->Data();
4204 ideal hh=(ideal)
h->Data();
4221 ideal hh=(ideal)
h->Data();
4234 ideal h1= (ideal)
h->Data();
4238 poly
p= (poly)
h->Data();
4242 poly q= (poly)
h->Data();
4276 poly
p= (poly)
h->Data();
4280 poly q= (poly)
h->Data();
4295 poly
p= (poly)
h->Data();
4299 poly q= (poly)
h->Data();
4315 ideal h1= (ideal)
h->Data();
4328 ideal h1= (ideal)
h->Data();
4342 ideal h1= (ideal)
h->Data();
4355 ideal h1= (ideal)
h->Data();
4359 poly
p= (poly)
h->Data();
4374 ideal h1= (ideal)
h->Data();
4378 poly q= (poly)
h->Data();
4382 int d= (int)(
long)
h->Data();
4397 ideal h1= (ideal)
h->Data();
4401 poly
p= (poly)
h->Data();
4405 poly q= (poly)
h->Data();
4420 ideal h1= (ideal)
h->Data();
4424 poly
p= (poly)
h->Data();
4428 poly q= (poly)
h->Data();
4432 int d= (int)(
long)
h->Data();
4449 ideal h1= (ideal)
h->Data();
4453 poly
p= (poly)
h->Data();
4457 poly q= (poly)
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 poly
p= (poly)
h->Data();
4522 ideal h1= (ideal)
h->Data();
4524 std::vector<std::vector<int> > vecs=
links(
p,h1);
4536 ideal h1= (ideal)
h->Data();
4549 ideal h1= (ideal)
h->Data();
4553 poly
p= (poly)
h->Data();
4557 int d= (int)(
long)
h->Data();
4572 ideal h1= (ideal)
h->Data();
4576 poly
p= (poly)
h->Data();
4580 poly q= (poly)
h->Data();
4584 int d= (int)(
long)
h->Data();
4600 ideal h1= (ideal)
h->Data();
4604 poly
p= (poly)
h->Data();
4608 poly q= (poly)
h->Data();
4612 poly
g= (poly)
h->Data();
4616 int d= (int)(
long)
h->Data();
4634 std::vector<int> bset,bs;
4635 std::vector<std::vector<int> > gset;
4638 int n= (int)(
long)
h->Data();
4642 ideal bi= (ideal)
h->Data();
4646 ideal gi= (ideal)
h->Data();
4651 bset.push_back(bs[0]);
4652 else if(bs.size()==0)
4656 WerrorS(
"Errors in T^1 Equations Solving!");
4664 std::vector<std::vector<int> > vecs=
eli2(n,bset,gset);
4678 ideal h1= (ideal)
h->Data();
4694 ideal h1= (ideal)
h->Data();
4698 poly
p= (poly)
h->Data();
4714 ideal h1= (ideal)
h->Data();
4718 poly
p= (poly)
h->Data();
4722 poly q= (poly)
h->Data();
4724 std::vector<std::vector<int> > vecs=
supports(h1);
4740 ideal h1= (ideal)
h->Data();
4744 poly
p= (poly)
h->Data();
4748 poly q= (poly)
h->Data();
4750 std::vector<std::vector<int> > vecs=
supports(h1), sbv,tnbr;
4752 std::vector<std::vector<int> > nvs=
Nabv(vecs, pv, qv);
4755 std::vector<int> tnv =
tnab(vecs,nvs,sbv);
4756 for(
int i=0;
i<tnv.size();
i++)
4758 tnbr.push_back(nvs[tnv[
i]]);
4773 ideal h1= (ideal)
h->Data();
4777 ideal h2= (ideal)
h->Data();
4792 ideal h1= (ideal)
h->Data();
4796 poly
p= (poly)
h->Data();
4800 poly q= (poly)
h->Data();
4816 ideal h1= (ideal)
h->Data();
4820 poly
p= (poly)
h->Data();
4824 poly q= (poly)
h->Data();
4825 std::vector<std::vector<int> > hvs=
supports(h1), nv, ntvs;
4828 ntvs=
nabtv( hvs, nv, av, bv);
4829 std::vector<std::vector<poly> > pvs=
idMakei(nv,ntvs);
4831 for(
int i=0;
i<pvs.size();
i++)
4851 poly a= (poly)
h->Data();
4855 ideal Xo= (ideal)
h->Data();
4859 ideal Sigma= (ideal)
h->Data();
4863 int vert= (int)(
long)
h->Data();
4867 int ord= (int)(
long)
h->Data();
4885 poly
p= (poly)
h->Data();
4889 ideal h1= (ideal)
h->Data();
4903 ideal h1= (ideal)
h->Data();
4907 ideal h2= (ideal)
h->Data();
4920 ideal h1= (ideal)
h->Data();
4934 ideal h1= (ideal)
h->Data();
4938 ideal h2= (ideal)
h->Data();
4954 poly
p= (poly)
h->Data();
4971 poly
p= (poly)
h->Data();
4985 ideal h1= (ideal)
h->Data();
4989 poly
p= (poly)
h->Data();
5004 ideal h1= (ideal)
h->Data();
5008 poly
p= (poly)
h->Data();
5009 std::vector<std::vector<int> > st=
star(
p, h1);
5010 std::vector<std::vector<int> > hvs=
supports(h1);
5011 std::vector<std::vector<int> > re=
vsMinusvs(hvs, st);
5025 ideal h1= (ideal)
h->Data();
5029 ideal h2= (ideal)
h->Data();
5045 poly
p= (poly)
h->Data();
5049 ideal h1= (ideal)
h->Data();
5065 ideal h2= (ideal)
h->Data();
5069 poly
p= (poly)
h->Data();
5084 ideal h1= (ideal)
h->Data();
5088 ideal h2= (ideal)
h->Data();
5102 ideal h1= (ideal)
h->Data();
5106 ideal h2= (ideal)
h->Data();
5121 poly
p= (poly)
h->Data();
5125 ideal h1= (ideal)
h->Data();
5129 poly a= (poly)
h->Data();
5133 poly
b= (poly)
h->Data();
5150 poly
p= (poly)
h->Data();
5154 poly q= (poly)
h->Data();
5158 poly
f= (poly)
h->Data();
5162 poly
g= (poly)
h->Data();
5166 poly a= (poly)
h->Data();
5170 poly
b= (poly)
h->Data();
5188 poly
p= (poly)
h->Data();
5192 int num= (int)(
long)
h->Data();
5207 ideal h1= (ideal)
h->Data();
5221 ideal h1= (ideal)
h->Data();
5235 ideal h1= (ideal)
h->Data();
5239 int num= (int)(
long)
h->Data();
5255 p->iiAddCproc(
"",
"findbset",
FALSE,
fb);
5256 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)
static bool nabtconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv)
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)
static std::vector< std::vector< int > > phi2(poly a, ideal Xo, ideal Sigma)
poly pMake3(std::vector< int > vbase)
std::vector< std::vector< int > > bsubsets_1(poly b)
BOOLEAN Valency(leftv res, leftv args)
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)
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