10#if !defined(__CYGWIN__) || defined(STATIC_VERSION)
65static void listsprint(std::vector<std::vector<int> > posMat)
68 for(
i=0;
i<posMat.size();
i++)
99 for(
unsigned i=0;
i<pv.size();
i++)
112static void lpsprint(std::vector<std::vector<poly> > pvs)
114 for(
unsigned i=0;
i<pvs.size();
i++)
150 std::vector<int> inte;
151 for(
i=0;
i<
p.size();
i++)
154 inte.push_back(
p[
i]);
160static bool vsubset(std::vector<int> vec1, std::vector<int> vec2)
163 if(vec1.size()>vec2.size())
165 for(
i=0;
i<vec1.size();
i++)
174static bool vEvl(std::vector<int> vec1, std::vector<int> vec2)
176 if(vec1.size()==0 && vec2.size()==0)
186static bool vInvsl(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
189 for(
i=0;
i<vecs.size();
i++)
200static std::vector<int>
vecUnion(std::vector<int> vec1, std::vector<int> vec2)
202 std::vector<int>
vec=vec1;
204 for(
i=0;
i<vec2.size();
i++)
207 vec.push_back(vec2[
i]);
212static std::vector<int>
vecMinus(std::vector<int> vec1,std::vector<int> vec2)
214 std::vector<int>
vec;
215 for(
unsigned i=0;
i<vec1.size();
i++)
219 vec.push_back(vec1[
i]);
225static std::vector<std::vector<int> >
vsMinusv(std::vector<std::vector<int> > vecs, std::vector<int>
vec)
228 std::vector<std::vector<int> >
rem;
229 for(
i=0;
i<vecs.size();
i++)
233 rem.push_back(vecs[
i]);
239static std::vector<std::vector<int> >
vsUnion(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
242 std::vector<std::vector<int> > vs=vs1;
243 for(
i=0;
i<vs2.size();
i++)
247 vs.push_back(vs2[
i]);
253static std::vector<std::vector<int> >
vsIntersection(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
256 std::vector<std::vector<int> > vs;
257 for(
i=0;
i<vs2.size();
i++)
261 vs.push_back(vs2[
i]);
274 std::vector<int> supset;
275 if(
p==0)
return supset;
289 std::vector<std::vector<int> > vecs;
290 std::vector<int>
vec;
308 std::vector<int> supset;
328 std::vector<std::vector<int> > vecs;
329 std::vector<int>
vec;
343static poly
pMake(std::vector<int> vbase)
345 int n=vbase.size(); poly
p,q=0;
358static ideal
idMake(std::vector<std::vector<int> > vecs)
360 int lv=vecs.size(),
i;
423 std::vector<int> vbase;
439static std::vector<std::vector<int> >
vsMake(ideal
h)
441 std::vector<int>
vec;
442 std::vector<std::vector<int> > vecs;
454static std::vector<std::vector<int> >
vecqring(std::vector<std::vector<int> > vec1, std::vector<std::vector<int> > vec2)
458 std::vector<std::vector<int> > vecs=
vsMake(
h);
465static poly
pMaken(std::vector<int> vbase)
479static ideal
idMaken(std::vector<std::vector<int> > vecs)
483 int i,lv=vecs.size();
500 std::vector<std::vector<int> > vecs;
503 bv.push_back(
vec[
i]);
508 for(
i=0;
i<vecs.size();
i++)
510 for(
j=
i+1;
j<vecs.size();
j++)
681 ideal asfmons,sfmons,mons;
790 ideal h1,mons,id_re=
idInit(1,1);
842 id_so=
idadda(id_so, id_re);
934static ideal
finda(ideal
h,poly S,
int ddeg)
943 std::vector<std::vector<int> > hvs=
supports(
h);
949 if(
vInvsl(
v,hvs)&&in.size()==0)
963static bool mabconditionv(std::vector<std::vector<int> > hvs,std::vector<int> pv,std::vector<int> av,std::vector<int> bv)
965 std::vector<int> uv=
vecUnion(pv,av);
975static std::vector<std::vector<int> >
Mabv(ideal
h,poly a,poly
b)
980 for(
unsigned i=0;
i<h2v.size();
i++)
996static std::vector<int>
eli1(std::vector<int> eq1,std::vector<int> eq2)
1041 std::vector<int> yaya;
1052static std::vector<std::vector<int> >
soleli1( std::vector<std::vector<int> > eqs)
1055 std::vector<int> yaya;
1056 std::vector<std::vector<int> > pre=eqs, ppre, re;
1059 re.push_back(eqs[0]);
1060 pre.erase(pre.begin());
1065 for(
i=1;
i<re.size();
i++)
1069 yaya=
eli1(re[
i],yaya);
1077 pre.erase(pre.begin());
1085static std::vector<int>
freevars(
int n, std::vector<int> bset, std::vector<std::vector<int> > gset)
1087 int ql=gset.size(), bl=bset.size(),
i;
1088 std::vector<int>
mvar, fvar;
1091 mvar.push_back(bset[
i]);
1095 mvar.push_back(gset[
i][0]);
1108static std::vector<int>
fvarsvalue(
int vnum, std::vector<int> fvars)
1111 std::vector<int> fset=fvars;
1112 for(
i=0;
i<fset.size();
i++)
1116 fset.erase(fset.begin()+
i);
1125static std::vector<std::vector<int> >
vAbsorb( std::vector<int> bset,std::vector<std::vector<int> > gset)
1127 std::vector<int> badset=bset;
1128 int i,
j,
m, bl=bset.size(), gl=gset.size();
1134 if(gset[
j][0]==
m && !
IsinL(gset[
j][1],badset))
1136 badset.push_back(gset[
j][1]);
1137 gset.erase(gset.begin()+
j);
1142 else if(!
IsinL(gset[
j][0],badset) && gset[
j][1]==
m)
1144 badset.push_back(gset[
j][0]);
1145 gset.erase(gset.begin()+
j);
1150 else if(
IsinL(gset[
j][0],badset) &&
IsinL(gset[
j][1],badset))
1152 gset.erase(gset.begin()+
j);
1162 if(badset.size()==0) badset.push_back(0);
1163 gset.push_back(badset);
1172 std::vector<int>
base;
1188 std::vector<int>
vec;
1201 std::vector<int>
vec;
1211static std::vector<int>
ofindbases1(
int num,
int vnum, std::vector<int> bset,std::vector<std::vector<int> > gset)
1213 std::vector<std::vector<int> > goodset;
1215 std::vector<int> zset=
fvarsvalue(vnum, fvars);
1217 oset.push_back(vnum);
1219 oset=goodset[goodset.size()-1];
1220 goodset.erase(goodset.end());
1227static std::vector<std::vector<int> >
ofindbases(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1230 std::vector<std::vector<int> > bases;
1231 std::vector<int> fvars=
freevars(
num, bset, gset), base1;
1232 if (fvars.size()==0)
1235 bases.push_back(base1);
1239 for(
i=0;
i<fvars.size();
i++)
1243 bases.push_back(base1);
1254static std::vector<std::vector<int> >
eli2(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1256 std::vector<int> badset;
1257 std::vector<std::vector<int> > goodset,
solve;
1267 int m=goodset.size();
1268 badset=goodset[
m-1];
1269 goodset.erase(goodset.end());
1293static std::vector<std::vector<int> >
links(poly a, ideal
h)
1296 std::vector<std::vector<int> > lk,X=
supports(
h);
1297 std::vector<int> U,In,av=
support1(a);
1298 for(
i=0;
i<X.size();
i++)
1302 if( In.size()==0 &&
vInvsl(U,X))
1341 std::vector<int> as;
1342 std::vector<std::vector<int> > hvs=
supports(
h);
1404static std::vector<int>
vertset(std::vector<std::vector<int> > vecs)
1407 std::vector<int> vert;
1408 std::vector<std::vector<int> > vvs;
1411 for(
j=0;
j<vecs.size();
j++)
1429 std::vector<std::vector<int> > pbv,lk=
links(a,
h),
res;
1430 std::vector<int> vert=
vertset(lk), bv;
1435 for(
i=0;
i<
res.size();
i++)
1438 pbv.push_back(
res[
i]);
1542 ideal h1,mons, id_re=
idInit(1,1);
1561static std::vector<std::vector<int> >
listsinsertlist(std::vector<std::vector<int> > gset,
int a,
int b)
1563 std::vector<int> eq;
1572 std::vector<int> equation;
1573 equation.push_back(
i);
1574 equation.push_back(
j);
1575 equation.push_back(t);
1587 for(
int i=0;
i<3;
i++)
1601static ideal
idMake3(std::vector<std::vector<int> > vecs)
1605 int i,lv=vecs.size();
1629 snprintf (tt[
i],10,
"t(%d)",
i+1);
1639static std::vector<int>
subspace1(std::vector<std::vector<int> > mv, std::vector<int> bv)
1641 int i,
num=mv.size();
1642 std::vector<int>
base;
1656static std::vector<poly>
pMakei(std::vector<std::vector<int> > mv,std::vector<int> vbase)
1659 std::vector<poly> h1;
1661 for(
int i=0;
i<n;
i++)
1670static std::vector<std::vector<poly> >
idMakei(std::vector<std::vector<int> > mv,std::vector<std::vector<int> > vecs)
1672 int i,lv=vecs.size();
1673 std::vector<std::vector<poly> > re;
1674 std::vector<poly>
h;
1734 std::vector<std::vector<int> > suu;
1745 PrintS(
"No element considered!\n");
1750static bool condition1for2(std::vector<int > pv,std::vector<int > qv,std::vector<int > bv)
1763static 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)
1776static bool condition3for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
1778 std::vector<int> v1,v2,v3;
1804 WerrorS(
"presolve.lib are not loaded!");
1814 ideal re=(ideal)L->
m[4].
CopyD();
1826 std::vector<int> fvar;
1844 std::vector<std::vector<int> > vecs;
1845 std::vector<int>
vec;
1856 vecs.push_back(
vec);
1864 std::vector<int>
vec;
1865 std::vector<std::vector<int> > vecs;
1872 std::vector<int> fvar=
numfree(h1);
1913 vecs.push_back(
vec);
1926static std::vector<int>
findalpha(std::vector<std::vector<int> > mv, std::vector<int> bv)
1928 std::vector<int> alset;
1929 for(
unsigned i=0;
i<mv.size();
i++)
1943 int i,
j, t, n=ntvs.size();
1944 std::vector<int> subase;
1951 subase.push_back(1);
1955 subase.push_back(-1);
1959 subase.push_back(0);
1968static std::vector<std::vector<int> >
subspacet(std::vector<std::vector<int> > mv, std::vector<int> bv,std::vector<std::vector<int> > ntvs)
1970 std::vector<int> alset=
findalpha(mv,bv), subase;
1971 std::vector<std::vector<int> > subases;
1972 for(
unsigned i=0;
i<alset.size();
i++)
1975 subases.push_back(subase);
1982static 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)
1984 std::vector<int> v1,var;
1985 std::vector<std::vector<int> > vars;
1986 for(
unsigned i=0;
i<Mv.size();
i++)
1988 for(
unsigned j=
i+1;
j<Mv.size();
j++)
1996 vars.push_back(var);
2007 int t0,t1,t2,
i,
j,t,
m;
2010 std::vector<std::vector<int> > hvs=
supports(
h), mv=
Mabv(
h,a,
b), mts, vecs,vars;
2012 mts=
mabtv(hvs,mv,av,bv);
2013 PrintS(
"The homomorphism should map onto:\n");
2018 vars=
mabtv(hvs,mv,av,bv);
2020 for(t0=0;t0<vars.size();t0++)
2031 vecs.push_back(
vec);
2041 vecs.push_back(
vec);
2044 for(t1=t0+1;t1<vars.size();t1++)
2046 for(t2=t1+1;t2<vars.size();t2++)
2048 if(vars[t0][0]==vars[t1][0]&&vars[t1][1]==vars[t2][1]&&vars[t0][1]==vars[t2][0])
2056 vecs.push_back(
vec);
2068 std::vector<std::vector<int> > re=
getvector(id_re,vn);
2069 PrintS(
"this is the solution for ideal :\n");
2072 std::vector<std::vector<int> > sub=
subspacet(mv, bv,vars);
2073 PrintS(
"this is the solution for subspace:\n");
2077 PrintS(
"This is the solution of coefficients:\n");
2083 PrintS(
"No element considered!");
2091static bool nabconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2105static std::vector<std::vector<int> >
Nabv(std::vector<std::vector<int> > hvs, std::vector<int> av, std::vector<int> bv)
2107 std::vector<std::vector<int> > vecs;
2114 vecs.push_back(hvs[
i]);
2122static bool nabtconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv)
2124 std::vector<int> v1;
2134static 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)
2136 std::vector<int> v1,var;
2137 std::vector<std::vector<int> > vars;
2138 for(
unsigned i=0;
i<Nv.size();
i++)
2140 for(
unsigned j=
i+1;
j<Nv.size();
j++)
2147 vars.push_back(var);
2156static bool tNab(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<std::vector<int> > bvs)
2158 std::vector<int> sv;
2159 if(bvs.size()<=1)
return false;
2160 for(
unsigned i=0;
i<bvs.size();
i++)
2171static std::vector<int>
tnab(std::vector<std::vector<int> > hvs,std::vector<std::vector<int> > nvs,std::vector<std::vector<int> > bvs)
2173 std::vector<int> pv,
vec;
2174 for(
unsigned j=0;
j<nvs.size();
j++)
2177 if(
tNab(hvs, pv, bvs))
2186static std::vector<int>
phimage(std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2188 std::vector<int> qv=
vecUnion(pv,av);
2195static 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)
2198 std::vector<int> pv,
base;
2199 std::vector<std::vector<int> > bases;
2200 for(
unsigned t=0;t<vecs.size();t++)
2202 for(
unsigned i=0;
i<mvs.size();
i++)
2205 for(
j=0;
j<nvs.size();
j++)
2209 base.push_back(vecs[t][
j]);
2218 if(
base.size()!=mvs.size())
2221 WerrorS(
"Errors in Equations solving (Values Finding)!");
2226 bases.push_back(
base);
2238 int i,
j, a=vecs.size();
2245 int b=vecs[0].size();
2265 std::vector<std::vector<int> > vecs=
supports(ids);
2279 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
2293 std::vector<int>
vec,solm;
2294 std::vector<std::vector<int> > solsm;
2298 for(
j=0;
j<
vec.size();
j++)
2301 solm.push_back(
vec[
j]);
2303 solsm.push_back(solm);
2326 tnv=
tnab(hvs,nv,sbv);
2327 for(
i=0;
i<tnv.size();
i++)
2330 bad.push_back(co+1);
2354 std::vector<int> su=
make1(n);
2355 std::vector<std::vector<int> > suu;
2385 std::vector<std::vector<int> >
solve;
2406 Print(
"Finished %d!\n",mm);
2409static bool condition2for2nv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> fv)
2423static std::vector<int>
findalphan(std::vector<std::vector<int> >
N, std::vector<int> tN)
2425 int i;std::vector<int> alset,
vec;
2426 for(
i=0;
i<
N.size();
i++)
2439static std::vector<std::vector<int> >
subspacetn(std::vector<std::vector<int> >
N, std::vector<int> tN, std::vector<std::vector<int> > ntvs)
2443 std::vector<std::vector<int> > subases;
2444 for(
i=0;
i<alset.size();
i++)
2447 subases.push_back(subase);
2458static 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)
2461 std::vector<int> pv,qv,
base;
2462 std::vector<std::vector<int> > bases;
2469 for(
unsigned t=0;t<vecs.size();t++)
2471 for(
unsigned i=0;
i<mts.size();
i++)
2481 for(
j=0;
j<nts.size();
j++)
2485 if(
vEvl(pv,nvs[row])&&
vEvl(qv,nvs[col]))
2487 base.push_back(vecs[t][
j]);
break;
2489 else if(
vEvl(pv,nvs[col])&&
vEvl(qv,nvs[row]))
2491 base.push_back(-vecs[t][
j]);
break;
2494 if(
j==nts.size()) {
base.push_back(0);}
2497 if(
base.size()!=mts.size())
2499 WerrorS(
"Errors in Values Finding(value2)!");
2504 bases.push_back(
base);
2512 std::vector<std::vector<int> > hvs=
supports(
h),mv,mts;
2515 mts=
mabtv(hvs,mv,av,bv);
2516 std::vector<std::vector<poly> > pvs=
idMakei(mv,mts);
2518 for(
unsigned i=0;
i<pvs.size();
i++)
2530 std::vector<std::vector<int> > hvs=
supports(
h),nv,mv,mts,sbv,vecs,vars,ntvs,
solve;
2536 tnv=
tnab(hvs,nv,sbv);
2539 mts=
mabtv(hvs,mv,av,bv);
2546 ntvs=
nabtv( hvs, nv, av, bv);
2550 for(
int t0=0;t0<
l;t0++)
2557 vecs.push_back(
vec);
2560 for(
int t1=t0+1;t1<ntvs.size();t1++)
2562 for(
int t2=t1+1;t2<ntvs.size();t2++)
2564 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
2572 vecs.push_back(
vec);
2585 std::vector<std::vector<int> > re=
getvector(id_re,
l);
2589 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
2612 std::vector<int> bv,av;
2613 std::vector<std::vector<int> >
solve;
2625 PrintS(
"This is a set according to current b:\n");
2643 Print(
"There are %d graded pieces in total.\n",
gp);
2648static std::vector<int>
phimagel(std::vector<int> fv, std::vector<int> av, std::vector<int> bv)
2650 std::vector<int> nv;
2658static 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)
2661 std::vector<int> pv;
2662 std::vector<int>
base;
2663 std::vector<std::vector<int> > bases;
2664 for(
unsigned t=0;t<vecs.size();t++)
2666 for(
unsigned i=0;
i<mvs.size();
i++)
2669 for(
j=0;
j<lks.size();
j++)
2673 base.push_back(vecs[t][
j]);
break;
2678 if(
base.size()!=mvs.size())
2680 WerrorS(
"Errors in Values Finding(value1l)!");
2684 bases.push_back(
base);
2696 Print(
"The time of value matching for first order deformation: %.2f sec ;\n", ((
double)
t_value)/CLOCKS_PER_SEC);
2697 Print(
"The total time of fpiece: %.2f sec ;\n", ((
double)
t_total)/CLOCKS_PER_SEC);
2698 Print(
"The time of equations construction for fpiece: %.2f sec ;\n", ((
double)
t_construct)/CLOCKS_PER_SEC);
2699 Print(
"The total time of equations solving for fpiece: %.2f sec ;\n", ((
double)
t_solve)/CLOCKS_PER_SEC);
2700 PrintS(
"__________________________________________________________\n");
2703static std::vector<std::vector<int> >
gpl(ideal
h,poly a,poly
b)
2706 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,good,
solve;
2719 tnv=
tnab(hvs,nv,sbv);
2720 for(
i=0;
i<tnv.size();
i++)
2723 bad.push_back(co+1);
2748 std::vector<int> su=
make1(n);
2749 std::vector<std::vector<int> > suu;
2778 nvl=
Nabv(lks,em,bv);
2791static 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)
2793 std::vector<int> pv,qv,
base;
2795 std::vector<std::vector<int> > bases;
2800 for(
unsigned t=0;t<vecs.size();t++)
2802 for(
unsigned i=0;
i<mts.size();
i++)
2812 for(
j=0;
j<lkts.size();
j++)
2816 if(
vEvl(pv,lks[row])&&
vEvl(qv,lks[col]))
2818 base.push_back(vecs[t][
j]);
break;
2820 else if(
vEvl(qv,lks[row])&&
vEvl(pv,lks[col]))
2822 base.push_back(-vecs[t][
j]);
break;
2831 if(
base.size()!=mts.size())
2833 WerrorS(
"Errors in Values Finding!");
2838 bases.push_back(
base);
2844static std::vector<std::vector<int> >
gpl2(ideal
h,poly a,poly
b)
2847 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,mts,vecs,vars,ntvs,
solve;
2853 tnv=
tnab(hvs,nv,sbv);
2856 mts=
mabtv(hvs,mv,av,bv);
2859 ntvs=
nabtv( hvs, nv, av, bv);
2863 for(
int t0=0;t0<
l;t0++)
2870 vecs.push_back(
vec);
2873 for(
int t1=t0+1;t1<ntvs.size();t1++)
2875 for(
int t2=t1+1;t2<ntvs.size();t2++)
2877 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
2885 vecs.push_back(
vec);
2895 std::vector<std::vector<int> > re=
getvector(id_re,
l);
2897 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
2917 mts=
mabtv(hvs,mv,av,bv);
2921 nvl=
Nabv(lks,em,bv);
2923 ntsl=
nabtv(lks,nvl,em,bv);
2927 if(
solve.size() > 0)
2972 std::vector<int> pv;
2984static std::vector<std::vector<int> >
triface(poly
p,
int vert)
2987 std::vector<std::vector<int> > fvs0, fvs;
2988 vec.push_back(vert);
2992 for(
unsigned i=0;
i<fvs0.size();
i++)
2995 vec.push_back(vert);
3006 std::vector<std::vector<int> > vecs=
supports(
h),vs,vs0;
3044 for(
unsigned i=0;
i<fv1.size();
i++)
3047 ev.push_back(fv1[
i]);
3071static std::vector<std::vector<int> >
tetraface(poly
p, poly q,
int vert)
3074 std::vector<std::vector<int> > fvs1, fvs2, fvs;
3075 vec.push_back(vert);
3083 for(
unsigned i=0;
i<fvs2.size();
i++)
3086 vec.push_back(vert);
3096 std::vector<std::vector<int> > vecs=
supports(
h), vs1;
3108static std::vector<std::vector<int> >
penface(poly
p, poly q, poly
g,
int vert)
3111 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);
3112 std::vector<std::vector<int> > fvs1, fvs2, fvs3, fvs, evec;
3113 evec.push_back(ev1);
3114 evec.push_back(ev2);
3115 evec.push_back(ev3);
3116 for(
unsigned i=0;
i<evec.size();
i++)
3118 if(evec[
i].
size()==2)
3125 vec.push_back(vert);
3135 for(
unsigned i=0;
i<evec.size();
i++)
3137 if(evec[
i].
size()==2)
3142 for(
unsigned i=0;
i<fvs3.size();
i++)
3145 vec.push_back(vert);
3155 std::vector<std::vector<int> > vecs=
supports(
h), vs1, evec;
3156 evec.push_back(ev1);
3157 evec.push_back(ev2);
3158 evec.push_back(ev3);
3159 for(
unsigned i=0;
i<evec.size();
i++)
3161 if(evec[
i].
size()==2)
3184 for(
unsigned i=0;
i<vecs.size();
i++)
3225static std::vector<std::vector<int> >
vsMinusvs(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
3227 std::vector<std::vector<int> > vs=vs1;
3228 for(
unsigned i=0;
i<vs2.size();
i++)
3235static std::vector<std::vector<int> >
vs_subsets(std::vector<std::vector<int> > vs)
3237 std::vector<std::vector<int> > sset, bv;
3238 for(
unsigned i=0;
i<vs.size();
i++)
3246static std::vector<std::vector<int> >
p_constant(ideal Xo, ideal Sigma)
3254static std::vector<std::vector<int> >
p_change(ideal Sigma)
3261static std::vector<std::vector<int> >
p_new(ideal Xo, ideal Sigma)
3279 fvs=
triface(Sigma->m[0], vert);
3283 fvs=
tetraface(Sigma->m[0], Sigma->m[1], vert);
3287 fvs=
penface(Sigma->m[0], Sigma->m[1], Sigma->m[2], vert);
3295 std::vector<int> ev;
3296 int ednum=vsig.size();
3299 vsig.push_back(
commonedge(sig->m[0], sig->m[1]));
3327static std::vector<std::vector<int> >
phi1(poly a, ideal Sigma)
3331 for(
unsigned i=0;
i<ss.size();
i++)
3334 if(
intvec.size()==av.size())
3343static std::vector<std::vector<int> >
phi2(poly a, ideal Xo, ideal Sigma)
3346 std::vector<std::vector<int> > ss=
p_new(Sigma, Xo), fvs;
3348 for(
unsigned i=0;
i<ss.size();
i++)
3351 if(
intvec.size()==av.size())
3360static std::vector<std::vector<int> >
links_new(poly a, ideal Xo, ideal Sigma,
int vert,
int ord)
3363 std::vector<std::vector<int> > lko, lkn, lk1, lk2;
3370 lk2=
phi2(a, Xo, Sigma);
3377 lkn=
phi2(a, Xo, Sigma);
3380 WerrorS(
"Cannot find the links smartly!");
3390 for(
unsigned i=0;
i<bs.size();
i++)
3405 std::vector<int> vp, iv=
phimagel(
v, v1, v2);
3417static int ifIso(poly
p, poly q, poly
f, poly
g, poly a, poly
b)
3420 std::vector<int> v1=
phimagel(vp, va, vb), v2=
phimagel(vq, va, vb), v3=
phimagel(vf, va, vb), v4=
phimagel(vg, va, vb);
3445static std::vector<int>
v_minus(std::vector<int> v1, std::vector<int> v2)
3447 std::vector<int>
vec;
3448 for(
unsigned i=0;
i<v1.size();
i++)
3450 vec.push_back(v1[
i]-v2[
i]);
3458 std::vector<int> av,bv;
3472static std::vector<std::vector<int> >
star(poly a, ideal
h)
3475 std::vector<std::vector<int> > st,X=
supports(
h);
3477 for(
i=0;
i<X.size();
i++)
3491 std::vector<std::vector<int> > vecs;
3493 vecs.push_back(
vec);
3514 vec_n.push_back(vert);
3515 for(
i=0;
i<lk.size();
i++)
3518 vecs_minus.push_back(
vec);
3519 for(
j=0;
j<bys.size();
j++)
3523 vecs_plus.push_back(
vec);
3534 std::vector<std::vector<int> > bset;
3535 for(
unsigned i=0;
i<bvs.size();
i++)
3537 for(
int j=0;
j!=
i;
j++)
3539 vs.push_back(bvs[
j]);
3552 ideal ai=
p_a(
h), bi;
3604 ideal hh=(ideal)
h->Data();
3616 ideal hh=(ideal)
h->Data();
3629 ideal hh=(ideal)
h->Data();
3641 ideal h1= (ideal)
h->Data();
3645 poly
p= (poly)
h->Data();
3649 poly q= (poly)
h->Data();
3681 poly
p= (poly)
h->Data();
3685 poly q= (poly)
h->Data();
3698 poly
p= (poly)
h->Data();
3702 poly q= (poly)
h->Data();
3715 ideal h1= (ideal)
h->Data();
3727 ideal h1= (ideal)
h->Data();
3739 ideal h1= (ideal)
h->Data();
3751 ideal h1= (ideal)
h->Data();
3755 poly
p= (poly)
h->Data();
3768 ideal h1= (ideal)
h->Data();
3772 poly q= (poly)
h->Data();
3776 int d= (int)(
long)
h->Data();
3790 ideal h1= (ideal)
h->Data();
3794 poly
p= (poly)
h->Data();
3798 poly q= (poly)
h->Data();
3812 ideal h1= (ideal)
h->Data();
3816 poly
p= (poly)
h->Data();
3820 poly q= (poly)
h->Data();
3824 int d= (int)(
long)
h->Data();
3839 ideal h1= (ideal)
h->Data();
3843 poly
p= (poly)
h->Data();
3847 poly q= (poly)
h->Data();
3861 ideal h1= (ideal)
h->Data();
3865 poly
p= (poly)
h->Data();
3869 poly q= (poly)
h->Data();
3883 ideal h1= (ideal)
h->Data();
3887 poly
p= (poly)
h->Data();
3891 poly q= (poly)
h->Data();
3905 poly
p= (poly)
h->Data();
3909 ideal h1= (ideal)
h->Data();
3911 std::vector<std::vector<int> > vecs=
links(
p,h1);
3923 ideal h1= (ideal)
h->Data();
3935 ideal h1= (ideal)
h->Data();
3939 poly
p= (poly)
h->Data();
3943 int d= (int)(
long)
h->Data();
3957 ideal h1= (ideal)
h->Data();
3961 poly
p= (poly)
h->Data();
3965 poly q= (poly)
h->Data();
3969 int d= (int)(
long)
h->Data();
3984 ideal h1= (ideal)
h->Data();
3988 poly
p= (poly)
h->Data();
3992 poly q= (poly)
h->Data();
3996 poly
g= (poly)
h->Data();
4000 int d= (int)(
long)
h->Data();
4014 std::vector<int> bset,bs;
4015 std::vector<std::vector<int> > gset;
4018 int n= (int)(
long)
h->Data();
4022 ideal bi= (ideal)
h->Data();
4026 ideal gi= (ideal)
h->Data();
4031 bset.push_back(bs[0]);
4032 else if(bs.size()==0)
4036 WerrorS(
"Errors in T^1 Equations Solving!");
4044 std::vector<std::vector<int> > vecs=
eli2(n,bset,gset);
4057 ideal h1= (ideal)
h->Data();
4069 ideal h1= (ideal)
h->Data();
4073 poly
p= (poly)
h->Data();
4086 ideal h1= (ideal)
h->Data();
4090 poly
p= (poly)
h->Data();
4094 poly q= (poly)
h->Data();
4096 std::vector<std::vector<int> > vecs=
supports(h1);
4110 ideal h1= (ideal)
h->Data();
4114 poly
p= (poly)
h->Data();
4118 poly q= (poly)
h->Data();
4120 std::vector<std::vector<int> > vecs=
supports(h1), sbv,tnbr;
4122 std::vector<std::vector<int> > nvs=
Nabv(vecs, pv, qv);
4125 std::vector<int> tnv =
tnab(vecs,nvs,sbv);
4126 for(
unsigned i=0;
i<tnv.size();
i++)
4128 tnbr.push_back(nvs[tnv[
i]]);
4142 ideal h1= (ideal)
h->Data();
4146 ideal h2= (ideal)
h->Data();
4160 ideal h1= (ideal)
h->Data();
4164 poly
p= (poly)
h->Data();
4168 poly q= (poly)
h->Data();
4182 ideal h1= (ideal)
h->Data();
4186 poly
p= (poly)
h->Data();
4190 poly q= (poly)
h->Data();
4191 std::vector<std::vector<int> > hvs=
supports(h1), nv, ntvs;
4194 ntvs=
nabtv( hvs, nv, av, bv);
4195 std::vector<std::vector<poly> > pvs=
idMakei(nv,ntvs);
4197 for(
unsigned i=0;
i<pvs.size();
i++)
4216 poly a= (poly)
h->Data();
4220 ideal Xo= (ideal)
h->Data();
4224 ideal Sigma= (ideal)
h->Data();
4228 int vert= (int)(
long)
h->Data();
4232 int ord= (int)(
long)
h->Data();
4248 poly
p= (poly)
h->Data();
4252 ideal h1= (ideal)
h->Data();
4265 ideal h1= (ideal)
h->Data();
4269 ideal h2= (ideal)
h->Data();
4282 ideal h1= (ideal)
h->Data();
4294 ideal h1= (ideal)
h->Data();
4298 ideal h2= (ideal)
h->Data();
4311 poly
p= (poly)
h->Data();
4323 poly
p= (poly)
h->Data();
4335 ideal h1= (ideal)
h->Data();
4339 poly
p= (poly)
h->Data();
4352 ideal h1= (ideal)
h->Data();
4356 poly
p= (poly)
h->Data();
4357 std::vector<std::vector<int> > st=
star(
p, h1);
4358 std::vector<std::vector<int> > hvs=
supports(h1);
4359 std::vector<std::vector<int> > re=
vsMinusvs(hvs, st);
4372 ideal h1= (ideal)
h->Data();
4376 ideal h2= (ideal)
h->Data();
4389 poly
p= (poly)
h->Data();
4393 ideal h1= (ideal)
h->Data();
4406 ideal h2= (ideal)
h->Data();
4410 poly
p= (poly)
h->Data();
4423 ideal h1= (ideal)
h->Data();
4427 ideal h2= (ideal)
h->Data();
4440 ideal h1= (ideal)
h->Data();
4444 ideal h2= (ideal)
h->Data();
4457 poly
p= (poly)
h->Data();
4461 ideal h1= (ideal)
h->Data();
4465 poly a= (poly)
h->Data();
4469 poly
b= (poly)
h->Data();
4484 poly
p= (poly)
h->Data();
4488 poly q= (poly)
h->Data();
4492 poly
f= (poly)
h->Data();
4496 poly
g= (poly)
h->Data();
4500 poly a= (poly)
h->Data();
4504 poly
b= (poly)
h->Data();
4521 poly
p= (poly)
h->Data();
4525 int num= (int)(
long)
h->Data();
4538 ideal h1= (ideal)
h->Data();
4550 ideal h1= (ideal)
h->Data();
4562 ideal h1= (ideal)
h->Data();
4566 int num= (int)(
long)
h->Data();
4580 p->iiAddCproc(
"",
"findbset",
FALSE,
fb);
4581 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
static BOOLEAN fa(leftv res, leftv args)
static std::vector< int > vecbase1(int num, std::vector< int > oset)
static BOOLEAN pa(leftv res, leftv args)
static BOOLEAN tsets(leftv res, leftv args)
static ideal T_1h(ideal h)
static std::vector< int > fvarsvalue(int vnum, std::vector< int > fvars)
static std::vector< int > commonedge(poly p, poly q)
static std::vector< int > v_minus(std::vector< int > v1, std::vector< int > v2)
static bool IsinL(int a, std::vector< int > vec)
static BOOLEAN tnabvl(leftv res, leftv args)
BOOLEAN nfaces1(leftv res, leftv args)
static std::vector< int > subspace1(std::vector< std::vector< int > > mv, std::vector< int > bv)
static std::vector< int > tnab(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > bvs)
static BOOLEAN cNew(leftv res, leftv args)
static std::vector< std::vector< int > > listsinsertlist(std::vector< std::vector< int > > gset, int a, int b)
static std::vector< std::vector< int > > vsMinusvs(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
static BOOLEAN comedg(leftv res, leftv args)
static poly pMaken(std::vector< int > vbase)
static 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)
static BOOLEAN idModulo(leftv res, leftv args)
static ideal idMaken(std::vector< std::vector< int > > vecs)
static std::vector< int > vecIntersection(std::vector< int > p, std::vector< int > q)
static std::vector< std::vector< int > > penface(poly p, poly q, poly g, int vert)
static ideal idMake(std::vector< std::vector< int > > vecs)
static std::vector< std::vector< int > > vsMinusv(std::vector< std::vector< int > > vecs, std::vector< int > vec)
static intvec * gradedpiece1n(ideal h, poly a, poly b)
static 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)
static BOOLEAN isoNumber(leftv res, leftv args)
static BOOLEAN makeSimplex(leftv res, leftv args)
static bool vInvsl(std::vector< int > vec, std::vector< std::vector< int > > vecs)
static 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 BOOLEAN fgp(leftv res, leftv args)
static bool tNab(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< std::vector< int > > bvs)
static int valency(ideal h, poly p)
static bool condition3for2(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > av, std::vector< int > bv)
static void lpsprint(std::vector< std::vector< poly > > pvs)
static 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)
static std::vector< int > phimagel(std::vector< int > fv, std::vector< int > av, std::vector< int > bv)
static BOOLEAN stars(leftv res, leftv args)
static std::vector< int > keeporder(std::vector< int > vec)
static std::vector< std::vector< int > > p_new(ideal Xo, ideal Sigma)
static BOOLEAN newDegree(leftv res, leftv args)
static 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)
static std::vector< std::vector< int > > Nabv(std::vector< std::vector< int > > hvs, std::vector< int > av, std::vector< int > bv)
static ideal trisets(ideal h)
static int idvert(ideal h)
static void firstorderdef_setup(SModulFunctions *p)
static ideal SimFacset(poly p)
static std::vector< std::vector< int > > links_new(poly a, ideal Xo, ideal Sigma, int vert, int ord)
static std::vector< std::vector< poly > > idMakei(std::vector< std::vector< int > > mv, std::vector< std::vector< int > > vecs)
static ideal psubset(poly p)
static BOOLEAN bprime(leftv res, leftv args)
static void listprint(std::vector< int > vec)
static BOOLEAN pConstant(leftv res, leftv args)
static bool vInp(int m, poly p)
static BOOLEAN dimsim(leftv res, leftv args)
static std::vector< std::vector< int > > ofindbases(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
static BOOLEAN fgpl(leftv res, leftv args)
static bool p_Ifsfree(poly P)
static int redefinedeg(poly p, int num)
static intvec * edgemat(poly p, poly q)
static BOOLEAN psMinusp(leftv res, leftv args)
static bool nabtconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv)
static BOOLEAN SRideal(leftv res, leftv args)
static std::vector< std::vector< int > > phi1(poly a, ideal Sigma)
static bool condition2for2nv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > fv)
static std::vector< int > freevars(int n, std::vector< int > bset, std::vector< std::vector< int > > gset)
static BOOLEAN stellarsubdivision(leftv res, leftv args)
static BOOLEAN idcomplement(leftv res, leftv args)
static std::vector< std::vector< int > > phi2(poly a, ideal Xo, ideal Sigma)
static int isoNum(poly p, ideal I, poly a, poly b)
static bool condition1for2(std::vector< int > pv, std::vector< int > qv, std::vector< int > bv)
static BOOLEAN isSim(leftv res, leftv args)
static ideal IsSimplex(ideal h)
static BOOLEAN gd(leftv res, leftv args)
static std::vector< std::vector< int > > vsUnion(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
static BOOLEAN nabvl(leftv res, leftv args)
static BOOLEAN fb(leftv res, leftv args)
static ideal idmodulo(ideal h1, ideal h2)
static ideal idadda(ideal h1, ideal h2)
static intvec * gradedpiece2n(ideal h, poly a, poly b)
static ideal idMake3(std::vector< std::vector< int > > vecs)
static ideal complementsimplex(ideal h)
static ideal c_New(ideal Io, ideal sig)
static std::vector< int > make1(int n)
static ideal qringadd(ideal h1, ideal h2, int deg)
static BOOLEAN eqsolve1(leftv res, leftv args)
static std::vector< std::vector< int > > vAbsorb(std::vector< int > bset, std::vector< std::vector< int > > gset)
static ideal finda(ideal h, poly S, int ddeg)
static std::vector< std::vector< int > > soleli1(std::vector< std::vector< int > > eqs)
static std::vector< int > vMake(poly p)
static std::vector< int > subspacet1(int num, std::vector< std::vector< int > > ntvs)
static std::vector< std::vector< int > > vsMake(ideal h)
static BOOLEAN numdim(leftv res, leftv args)
static bool vEvl(std::vector< int > vec1, std::vector< int > vec2)
static BOOLEAN vsIntersec(leftv res, leftv args)
static BOOLEAN support(leftv res, leftv args)
static void id_print(ideal h)
static std::vector< std::vector< int > > bsubsets_1(poly b)
static BOOLEAN genstt(leftv res, leftv args)
static void TimeShow(clock_t t_construct, clock_t t_solve, clock_t t_value, clock_t t_total)
static intvec * dmat(poly a, poly b)
static BOOLEAN nonf2f(leftv res, leftv args)
static std::vector< std::vector< int > > stellarsub(poly a, ideal h)
static void equmab(int num)
static BOOLEAN sgpl(leftv res, leftv args)
static std::vector< int > support1(poly p)
static bool nabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
static std::vector< int > support2(poly p)
static std::vector< std::vector< int > > p_change(ideal Sigma)
static std::vector< std::vector< int > > vecqring(std::vector< std::vector< int > > vec1, std::vector< std::vector< int > > vec2)
static std::vector< int > gdegree(poly a, poly b)
static ideal id_sfmon(ideal h)
static ideal triangulations1(ideal h, poly p, int vert)
static int id_maxdeg(ideal h)
static std::vector< int > vertset(std::vector< std::vector< int > > vecs)
static ideal id_complement(ideal h)
static ideal p_a(ideal h)
static std::vector< std::vector< int > > tetraface(poly p, poly q, int vert)
static std::vector< std::vector< int > > eli2(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
static ideal triangulations3(ideal h, poly p, poly q, poly g, int vert)
static std::vector< std::vector< int > > vs_subsets(std::vector< std::vector< int > > vs)
static std::vector< int > vecUnion(std::vector< int > vec1, std::vector< int > vec2)
static BOOLEAN sgp(leftv res, leftv args)
static intvec * Tmat(std::vector< std::vector< int > > vecs)
static std::vector< std::vector< int > > canonicalbase(int n)
static BOOLEAN idsr(leftv res, leftv args)
static std::vector< std::vector< int > > minisolve(std::vector< std::vector< int > > solve, std::vector< int > index)
static ideal genst(ideal h, poly a, poly b)
static BOOLEAN linkn(leftv res, leftv args)
static std::vector< int > vecMinus(std::vector< int > vec1, std::vector< int > vec2)
static std::vector< std::vector< int > > Mabv(ideal h, poly a, poly b)
static std::vector< int > gensindex(ideal M, ideal ids)
static BOOLEAN Valency(leftv res, leftv args)
static std::vector< int > makeequation(int i, int j, int t)
static bool mabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
static std::vector< std::vector< int > > boundary(poly a)
static ideal idMinus(ideal h1, ideal h2)
int SI_MOD_INIT() cohomo(SModulFunctions *p)
static int dim_sim(ideal h)
static std::vector< std::vector< int > > star(poly a, ideal h)
static std::vector< int > findalpha(std::vector< std::vector< int > > mv, std::vector< int > bv)
static BOOLEAN stellarremain(leftv res, leftv args)
static void lpprint(std::vector< poly > pv)
static ideal getpresolve(ideal h)
static BOOLEAN nabtvl(leftv res, leftv args)
static std::vector< int > make0(int n)
static std::vector< std::vector< int > > subspacetn(std::vector< std::vector< int > > N, std::vector< int > tN, std::vector< std::vector< int > > ntvs)
static int pcoef(poly p, int m)
static ideal triangulations2(ideal h, poly p, poly q, int vert)
static std::vector< std::vector< int > > getvector(ideal h, int n)
static std::vector< std::vector< int > > gpl(ideal h, poly a, poly b)
static BOOLEAN nfaces3(leftv res, leftv args)
static 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)
static void gradedpiece1(ideal h, poly a, poly b)
static BOOLEAN p_New(leftv res, leftv args)
static BOOLEAN Links(leftv res, leftv args)
static poly pMake(std::vector< int > vbase)
static BOOLEAN nfaces2(leftv res, leftv args)
static 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)
static bool IsInX(poly p, ideal X)
static intvec * gradedpiece1nl(ideal h, poly a, poly b, int set)
static std::vector< std::vector< int > > links(poly a, ideal h)
static std::vector< std::vector< int > > supports(ideal h)
static BOOLEAN pb(leftv res, leftv args)
static std::vector< int > ofindbases1(int num, int vnum, std::vector< int > bset, std::vector< std::vector< int > > gset)
static std::vector< std::vector< int > > vsIntersection(std::vector< std::vector< int > > vs1, std::vector< std::vector< int > > vs2)
static ideal sfreemon(ideal h, int deg)
static int existIn(poly b, ideal Xs)
static std::vector< std::vector< int > > supports2(ideal h)
static BOOLEAN pChange(leftv res, leftv args)
static std::vector< std::vector< int > > gpl2(ideal h, poly a, poly b)
static std::vector< int > numfree(ideal h)
static std::vector< int > eli1(std::vector< int > eq1, std::vector< int > eq2)
static ideal idsrRing(ideal h)
static ideal idMinusp(ideal I, poly p)
static std::vector< std::vector< int > > triface(poly p, int vert)
static BOOLEAN idminus(leftv res, leftv args)
static ideal p_b(ideal h, poly a)
static void listsprint(std::vector< std::vector< int > > posMat)
static BOOLEAN mabvl(leftv res, leftv args)
static int num4dim(ideal h, int n)
static std::vector< int > findalphan(std::vector< std::vector< int > > N, std::vector< int > tN)
static BOOLEAN ifIsomorphism(leftv res, leftv args)
static int ifIso(poly p, poly q, poly f, poly g, poly a, poly b)
static void gradedpiece2(ideal h, poly a, poly b)
static intvec * gradedpiece2nl(ideal h, poly a, poly b)
static std::vector< std::vector< int > > b_subsets(std::vector< int > vec)
static std::vector< std::vector< int > > p_constant(ideal Xo, ideal Sigma)
static BOOLEAN existsub(leftv res, leftv args)
static ideal mingens(ideal h, poly a, poly b)
static std::vector< int > phimage(std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
static bool vsubset(std::vector< int > vec1, std::vector< int > vec2)
static ideal findb(ideal h)
static BOOLEAN t1h(leftv res, leftv args)
static std::vector< poly > pMakei(std::vector< std::vector< int > > mv, std::vector< int > vbase)
static std::vector< std::vector< int > > subspacet(std::vector< std::vector< int > > mv, std::vector< int > bv, std::vector< std::vector< int > > ntvs)
static poly pMake3(std::vector< int > vbase)
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