10#if !defined(__CYGWIN__) || defined(STATIC_VERSION)
49static void listprint(std::vector<int>
vec)
51 for(
unsigned i=0;
i<
vec.size();
i++)
66static void listsprint(std::vector<std::vector<int> > posMat)
68 for(
unsigned i=0;
i<posMat.size();
i++)
85static void id_print(ideal
h)
99static void lpprint( std::vector<poly> pv)
101 for(
unsigned i=0;
i<pv.size();
i++)
116static void lpsprint(std::vector<std::vector<poly> > pvs)
118 for(
unsigned i=0;
i<pvs.size();
i++)
139 for(
unsigned i=0;
i<
vec.size();
i++)
153 std::vector<int> inte;
154 for(
unsigned i=0;
i<
p.size();
i++)
157 inte.push_back(
p[
i]);
163static bool vsubset(std::vector<int> vec1, std::vector<int> vec2)
165 if(vec1.size()>vec2.size())
167 for(
int i=0;
i<vec1.size();
i++)
176static bool vEvl(std::vector<int> vec1, std::vector<int> vec2)
178 if(vec1.size()==0 && vec2.size()==0)
188static bool vInvsl(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
190 for(
int i=0;
i<vecs.size();
i++)
201static std::vector<int>
vecUnion(std::vector<int> vec1, std::vector<int> vec2)
203 std::vector<int>
vec=vec1;
204 for(
unsigned 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)
227 std::vector<std::vector<int> >
rem;
228 for(
int i=0;
i<vecs.size();
i++)
232 rem.push_back(vecs[
i]);
238static std::vector<std::vector<int> >
vsUnion(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
240 std::vector<std::vector<int> > vs=vs1;
241 for(
int i=0;
i<vs2.size();
i++)
245 vs.push_back(vs2[
i]);
251static std::vector<std::vector<int> >
vsIntersection(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
253 std::vector<std::vector<int> > vs;
254 for(
int i=0;
i<vs2.size();
i++)
258 vs.push_back(vs2[
i]);
270 std::vector<int> supset;
271 if(
p==
NULL)
return supset;
285 std::vector<std::vector<int> > vecs;
286 std::vector<int>
vec;
303 std::vector<int> supset;
323 std::vector<std::vector<int> > vecs;
324 std::vector<int>
vec;
338static poly
pMake(std::vector<int> vbase)
340 int n=vbase.size(); poly
p,q;
354static ideal
idMake(std::vector<std::vector<int> > vecs)
359 for(
int i=0;
i<lv;
i++)
419 std::vector<int> vbase;
435static std::vector<std::vector<int> >
vsMake(ideal
h)
437 std::vector<int>
vec;
438 std::vector<std::vector<int> > vecs;
449static std::vector<std::vector<int> >
vecqring(std::vector<std::vector<int> > vec1, std::vector<std::vector<int> > vec2)
455 std::vector<std::vector<int> > vecs=
vsMake(
h);
462static poly
pMaken(std::vector<int> vbase)
476static ideal
idMaken(std::vector<std::vector<int> > vecs)
481 for(
int i=0;
i<lv;
i++)
496 std::vector<std::vector<int> > vecs;
497 for(
int i=0;
i<
vec.size();
i++)
499 bv.push_back(
vec[
i]);
504 for(
int i=0;
i<vecs.size();
i++)
506 for(
int j=
i+1;
j<vecs.size();
j++)
671 ideal asfmons,sfmons,mons;
675 for(
int j=2;
j<=vert;
j++)
680 ideal old_asfmons=asfmons;
792 ideal h1,mons,id_re=
idInit(1,1);
847 ideal old_id_so=id_so;
848 id_so=
idadda(id_so, id_re);
950static ideal
finda(ideal
h,poly S,
int ddeg)
958 std::vector<std::vector<int> > hvs=
supports(
h);
964 if(
vInvsl(
v,hvs)&&in.size()==0)
984static bool mabconditionv(std::vector<std::vector<int> > hvs,std::vector<int> pv,std::vector<int> av,std::vector<int> bv)
986 std::vector<int> uv=
vecUnion(pv,av);
996static std::vector<std::vector<int> >
Mabv(ideal
h,poly a,poly
b)
1001 for(
unsigned i=0;
i<h2v.size();
i++)
1018static std::vector<int>
eli1(std::vector<int> eq1,std::vector<int> eq2)
1021 std::vector<int> eq;
1063 std::vector<int> yaya;
1074static std::vector<std::vector<int> >
soleli1( std::vector<std::vector<int> > eqs)
1077 std::vector<int> yaya;
1078 std::vector<std::vector<int> > pre=eqs, ppre, re;
1081 re.push_back(eqs[0]);
1082 pre.erase(pre.begin());
1087 for(
i=1;
i<re.size();
i++)
1091 yaya=
eli1(re[
i],yaya);
1099 pre.erase(pre.begin());
1107static std::vector<int>
freevars(
int n, std::vector<int> bset, std::vector<std::vector<int> > gset)
1109 int ql=gset.size(), bl=bset.size();
1110 std::vector<int>
mvar, fvar;
1111 for(
int i=0;
i<bl;
i++)
1113 mvar.push_back(bset[
i]);
1115 for(
int i=0;
i<ql;
i++)
1117 mvar.push_back(gset[
i][0]);
1119 for(
int i=1;
i<=n;
i++)
1130static std::vector<int>
fvarsvalue(
int vnum, std::vector<int> fvars)
1132 std::vector<int> fset=fvars;
1133 for(
int i=0;
i<fset.size();
i++)
1137 fset.erase(fset.begin()+
i);
1146static std::vector<std::vector<int> >
vAbsorb( std::vector<int> bset,std::vector<std::vector<int> > gset)
1148 std::vector<int> badset=bset;
1149 int m, bl=bset.size(), gl=gset.size();
1150 for(
int i=0;
i<bl;
i++)
1153 for(
int j=0;
j<gl;
j++)
1155 if(gset[
j][0]==
m && !
IsinL(gset[
j][1],badset))
1157 badset.push_back(gset[
j][1]);
1158 gset.erase(gset.begin()+
j);
1163 else if(!
IsinL(gset[
j][0],badset) && gset[
j][1]==
m)
1165 badset.push_back(gset[
j][0]);
1166 gset.erase(gset.begin()+
j);
1171 else if(
IsinL(gset[
j][0],badset) &&
IsinL(gset[
j][1],badset))
1173 gset.erase(gset.begin()+
j);
1183 if(badset.size()==0) badset.push_back(0);
1184 gset.push_back(badset);
1192 std::vector<int> base;
1207 std::vector<int>
vec;
1208 for(
int i=0;
i<n;
i++)
1219 std::vector<int>
vec;
1220 for(
int i=0;
i<n;
i++)
1229static std::vector<int>
ofindbases1(
int num,
int vnum, std::vector<int> bset,std::vector<std::vector<int> > gset)
1231 std::vector<std::vector<int> > goodset;
1232 std::vector<int> fvars=
freevars(
num, bset, gset), oset, base;
1233 std::vector<int> zset=
fvarsvalue(vnum, fvars);
1235 oset.push_back(vnum);
1237 oset=goodset[goodset.size()-1];
1245static std::vector<std::vector<int> >
ofindbases(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1247 std::vector<std::vector<int> > bases;
1248 std::vector<int> fvars=
freevars(
num, bset, gset), base1;
1249 if (fvars.size()==0)
1252 bases.push_back(base1);
1256 for(
unsigned i=0;
i<fvars.size();
i++)
1260 bases.push_back(base1);
1271static std::vector<std::vector<int> >
eli2(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1273 std::vector<int> badset;
1274 std::vector<std::vector<int> > goodset,
solve;
1284 int m=goodset.size();
1285 badset=goodset[
m-1];
1310static std::vector<std::vector<int> >
links(poly a, ideal
h)
1312 std::vector<std::vector<int> > lk,X=
supports(
h);
1313 std::vector<int> U,In,av=
support1(a);
1314 for(
int i=0;
i<X.size();
i++)
1318 if( In.size()==0 &&
vInvsl(U,X))
1357 std::vector<int> as;
1358 std::vector<std::vector<int> > hvs=
supports(
h);
1366 for(
int i=2;
i<=deg;
i++)
1423static std::vector<int>
vertset(std::vector<std::vector<int> > vecs)
1425 std::vector<int> vert;
1426 std::vector<std::vector<int> > vvs;
1429 for(
unsigned j=0;
j<vecs.size();
j++)
1447 std::vector<std::vector<int> > pbv,lk=
links(a,
h),
res;
1448 std::vector<int> vert=
vertset(lk), bv;
1453 for(
unsigned i=0;
i<
res.size();
i++)
1456 pbv.push_back(
res[
i]);
1561 ideal h1,mons, id_re=
idInit(1,1);
1585static std::vector<std::vector<int> >
listsinsertlist(std::vector<std::vector<int> > gset,
int a,
int b)
1587 std::vector<int> eq;
1596 std::vector<int> equation;
1597 equation.push_back(
i);
1598 equation.push_back(
j);
1599 equation.push_back(t);
1611 for(
int i=0;
i<3;
i++)
1624static ideal
idMake3(std::vector<std::vector<int> > vecs)
1628 unsigned lv=vecs.size();
1629 for(
unsigned i=0;
i<lv;
i++)
1652 snprintf (tt[
i],16,
"t(%d)",
i+1);
1663static std::vector<int> subspace1(std::vector<std::vector<int> > mv, std::vector<int> bv)
1665 int i,
num=mv.size();
1666 std::vector<int>
base;
1681static std::vector<poly>
pMakei(std::vector<std::vector<int> > mv,std::vector<int> vbase)
1684 std::vector<poly> h1;
1686 for(
int i=0;
i<n;
i++)
1695static std::vector<std::vector<poly> >
idMakei(std::vector<std::vector<int> > mv,std::vector<std::vector<int> > vecs)
1697 int i,lv=vecs.size();
1698 std::vector<std::vector<poly> > re;
1699 std::vector<poly>
h;
1716static void gradedpiece1(ideal
h,poly a,poly
b)
1757 std::vector<int> su=subspace1(mv,bv);
1760 std::vector<std::vector<int> > suu;
1771 PrintS(
"No element considered!\n");
1778static bool condition1for2(std::vector<int > pv,std::vector<int > qv,std::vector<int > bv)
1793static 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)
1808static bool condition3for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
1810 std::vector<int> v1,v2,v3;
1837 WerrorS(
"presolve.lib are not loaded!");
1847 ideal re=(ideal)L->
m[4].
CopyD();
1859 std::vector<int> fvar;
1877 std::vector<std::vector<int> > vecs;
1878 std::vector<int>
vec;
1889 vecs.push_back(
vec);
1897 std::vector<int>
vec;
1898 std::vector<std::vector<int> > vecs;
1905 std::vector<int> fvar=
numfree(h1);
1946 vecs.push_back(
vec);
1960static std::vector<int> findalpha(std::vector<std::vector<int> > mv, std::vector<int> bv)
1962 std::vector<int> alset;
1963 for(
unsigned i=0;
i<mv.size();
i++)
1978 int i,
j, t, n=ntvs.size();
1979 std::vector<int> subase;
1986 subase.push_back(1);
1990 subase.push_back(-1);
1994 subase.push_back(0);
2004static std::vector<std::vector<int> > subspacet(std::vector<std::vector<int> > mv, std::vector<int> bv,std::vector<std::vector<int> > ntvs)
2006 std::vector<int> alset=findalpha(mv,bv), subase;
2007 std::vector<std::vector<int> > subases;
2008 for(
unsigned i=0;
i<alset.size();
i++)
2011 subases.push_back(subase);
2019static 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)
2021 std::vector<int> v1,var;
2022 std::vector<std::vector<int> > vars;
2023 for(
unsigned i=0;
i<Mv.size();
i++)
2025 for(
unsigned j=
i+1;
j<Mv.size();
j++)
2033 vars.push_back(var);
2043static void gradedpiece2(ideal
h,poly a,poly
b)
2045 int t0,t1,t2,
i,
j,t,
m;
2048 std::vector<std::vector<int> > hvs=
supports(
h), mv=
Mabv(
h,a,
b), mts, vecs,vars;
2050 mts=
mabtv(hvs,mv,av,bv);
2051 PrintS(
"The homomorphism should map onto:\n");
2056 vars=
mabtv(hvs,mv,av,bv);
2058 for(t0=0;t0<vars.size();t0++)
2062 if(!condition1for2(mv[
i],mv[
j],bv))
2069 vecs.push_back(
vec);
2072 if(condition3for2(hvs,mv[
i],mv[
j],av,bv))
2079 vecs.push_back(
vec);
2082 for(t1=t0+1;t1<vars.size();t1++)
2084 for(t2=t1+1;t2<vars.size();t2++)
2086 if(vars[t0][0]==vars[t1][0]&&vars[t1][1]==vars[t2][1]&&vars[t0][1]==vars[t2][0])
2091 if(condition2for2(hvs,mv[
i],mv[
j],mv[t],av,bv))
2094 vecs.push_back(
vec);
2106 std::vector<std::vector<int> > re=
getvector(id_re,vn);
2107 PrintS(
"this is the solution for ideal :\n");
2110 std::vector<std::vector<int> > sub=subspacet(mv, bv,vars);
2111 PrintS(
"this is the solution for subspace:\n");
2115 PrintS(
"This is the solution of coefficients:\n");
2121 PrintS(
"No element considered!");
2130static bool nabconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2144static std::vector<std::vector<int> >
Nabv(std::vector<std::vector<int> > hvs, std::vector<int> av, std::vector<int> bv)
2146 std::vector<std::vector<int> > vecs;
2153 vecs.push_back(hvs[
i]);
2161static bool nabtconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv)
2163 std::vector<int> v1;
2173static 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)
2175 std::vector<int> v1,var;
2176 std::vector<std::vector<int> > vars;
2177 for(
unsigned i=0;
i<Nv.size();
i++)
2179 for(
unsigned j=
i+1;
j<Nv.size();
j++)
2186 vars.push_back(var);
2195static bool tNab(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<std::vector<int> > bvs)
2197 std::vector<int> sv;
2198 if(bvs.size()<=1)
return false;
2199 for(
unsigned i=0;
i<bvs.size();
i++)
2210static std::vector<int>
tnab(std::vector<std::vector<int> > hvs,std::vector<std::vector<int> > nvs,std::vector<std::vector<int> > bvs)
2212 std::vector<int> pv,
vec;
2213 for(
unsigned j=0;
j<nvs.size();
j++)
2216 if(
tNab(hvs, pv, bvs))
2225static std::vector<int>
phimage(std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2227 std::vector<int> qv=
vecUnion(pv,av);
2234static 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)
2237 std::vector<int> pv, base;
2238 std::vector<std::vector<int> > bases;
2239 for(
unsigned t=0;t<vecs.size();t++)
2241 for(
unsigned i=0;
i<mvs.size();
i++)
2244 for(
j=0;
j<nvs.size();
j++)
2248 base.push_back(vecs[t][
j]);
2257 if(base.size()!=mvs.size())
2260 WerrorS(
"Errors in Equations solving (Values Finding)!");
2265 bases.push_back(base);
2277 unsigned a=vecs.size();
2284 int b=vecs[0].size();
2286 for(
unsigned i=1;
i<=a;
i++)
2288 for(
unsigned j=1;
j<=
b;
j++)
2304 std::vector<std::vector<int> > vecs=
supports(ids);
2318 std::vector<std::vector<int> > mv=
Mabv(
h,a,
b);
2332 std::vector<int>
vec,solm;
2333 std::vector<std::vector<int> > solsm;
2337 for(
j=0;
j<
vec.size();
j++)
2340 solm.push_back(
vec[
j]);
2342 solsm.push_back(solm);
2361 unsigned n=nv.size();
2365 tnv=
tnab(hvs,nv,sbv);
2366 for(
unsigned i=0;
i<tnv.size();
i++)
2369 bad.push_back(co+1);
2371 for(
unsigned i=0;
i<n;
i++)
2373 for(
unsigned j=
i+1;
j<n;
j++)
2393 std::vector<int> su=
make1(n);
2394 std::vector<std::vector<int> > suu;
2419static void T1(ideal
h)
2425 std::vector<std::vector<int> >
solve;
2446 Print(
"Finished %d!\n",mm);
2450static bool condition2for2nv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> fv)
2464static std::vector<int>
findalphan(std::vector<std::vector<int> >
N, std::vector<int> tN)
2466 int i;std::vector<int> alset,
vec;
2467 for(
i=0;
i<
N.size();
i++)
2480static std::vector<std::vector<int> >
subspacetn(std::vector<std::vector<int> >
N, std::vector<int> tN, std::vector<std::vector<int> > ntvs)
2484 std::vector<std::vector<int> > subases;
2485 for(
i=0;
i<alset.size();
i++)
2488 subases.push_back(subase);
2499static 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)
2502 std::vector<int> pv,qv, base;
2503 std::vector<std::vector<int> > bases;
2510 for(
unsigned t=0;t<vecs.size();t++)
2512 for(
unsigned i=0;
i<mts.size();
i++)
2522 for(
j=0;
j<nts.size();
j++)
2526 if(
vEvl(pv,nvs[row])&&
vEvl(qv,nvs[col]))
2528 base.push_back(vecs[t][
j]);
break;
2530 else if(
vEvl(pv,nvs[col])&&
vEvl(qv,nvs[row]))
2532 base.push_back(-vecs[t][
j]);
break;
2535 if(
j==nts.size()) {base.push_back(0);}
2538 if(base.size()!=mts.size())
2540 WerrorS(
"Errors in Values Finding(value2)!");
2545 bases.push_back(base);
2553 std::vector<std::vector<int> > hvs=
supports(
h),mv,mts;
2556 mts=
mabtv(hvs,mv,av,bv);
2557 std::vector<std::vector<poly> > pvs=
idMakei(mv,mts);
2559 for(
unsigned i=0;
i<pvs.size();
i++)
2571 std::vector<std::vector<int> > hvs=
supports(
h),nv,mv,mts,sbv,vecs,vars,ntvs,
solve;
2577 tnv=
tnab(hvs,nv,sbv);
2580 mts=
mabtv(hvs,mv,av,bv);
2587 ntvs=
nabtv( hvs, nv, av, bv);
2591 for(
int t0=0;t0<
l;t0++)
2598 vecs.push_back(
vec);
2601 for(
unsigned t1=t0+1;t1<ntvs.size();t1++)
2603 for(
unsigned t2=t1+1;t2<ntvs.size();t2++)
2605 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
2613 vecs.push_back(
vec);
2626 std::vector<std::vector<int> > re=
getvector(id_re,
l);
2630 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
2648static void T2(ideal
h)
2654 std::vector<int> bv,av;
2655 std::vector<std::vector<int> >
solve;
2667 PrintS(
"This is a set according to current b:\n");
2685 Print(
"There are %d graded pieces in total.\n",
gp);
2691static std::vector<int>
phimagel(std::vector<int> fv, std::vector<int> av, std::vector<int> bv)
2693 std::vector<int> nv;
2701static 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)
2703 std::vector<int> pv;
2704 std::vector<int> base;
2705 std::vector<std::vector<int> > bases;
2706 for(
unsigned t=0;t<vecs.size();t++)
2708 for(
unsigned i=0;
i<mvs.size();
i++)
2711 for(
unsigned j=0;
j<lks.size();
j++)
2715 base.push_back(vecs[t][
j]);
break;
2720 if(base.size()!=mvs.size())
2722 WerrorS(
"Errors in Values Finding(value1l)!");
2726 bases.push_back(base);
2738 Print(
"The time of value matching for first order deformation: %.2f sec ;\n", ((
double)
t_value)/CLOCKS_PER_SEC);
2739 Print(
"The total time of fpiece: %.2f sec ;\n", ((
double)
t_total)/CLOCKS_PER_SEC);
2740 Print(
"The time of equations construction for fpiece: %.2f sec ;\n", ((
double)
t_construct)/CLOCKS_PER_SEC);
2741 Print(
"The total time of equations solving for fpiece: %.2f sec ;\n", ((
double)
t_solve)/CLOCKS_PER_SEC);
2742 PrintS(
"__________________________________________________________\n");
2745static std::vector<std::vector<int> >
gpl(ideal
h,poly a,poly
b)
2748 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,good,
solve;
2756 unsigned n=nv.size();
2761 tnv=
tnab(hvs,nv,sbv);
2762 for(
unsigned i=0;
i<tnv.size();
i++)
2765 bad.push_back(co+1);
2767 for(
unsigned i=0;
i<n;
i++)
2769 for(
unsigned j=
i+1;
j<n;
j++)
2790 std::vector<int> su=
make1(n);
2791 std::vector<std::vector<int> > suu;
2820 nvl=
Nabv(lks,em,bv);
2833static 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)
2835 std::vector<int> pv,qv,base;
2837 std::vector<std::vector<int> > bases;
2842 for(
unsigned t=0;t<vecs.size();t++)
2844 for(
unsigned i=0;
i<mts.size();
i++)
2854 for(
unsigned j=0;
j<lkts.size();
j++)
2858 if(
vEvl(pv,lks[row])&&
vEvl(qv,lks[col]))
2860 base.push_back(vecs[t][
j]);
break;
2862 else if(
vEvl(qv,lks[row])&&
vEvl(pv,lks[col]))
2864 base.push_back(-vecs[t][
j]);
break;
2873 if(base.size()!=mts.size())
2875 WerrorS(
"Errors in Values Finding!");
2880 bases.push_back(base);
2886static std::vector<std::vector<int> >
gpl2(ideal
h,poly a,poly
b)
2889 std::vector<std::vector<int> > hvs=
supports(
h),sbv,nv,mv,mts,vecs,vars,ntvs,
solve;
2895 tnv=
tnab(hvs,nv,sbv);
2898 mts=
mabtv(hvs,mv,av,bv);
2901 ntvs=
nabtv( hvs, nv, av, bv);
2905 for(
int t0=0;t0<
l;t0++)
2912 vecs.push_back(
vec);
2915 for(
unsigned t1=t0+1;t1<ntvs.size();t1++)
2917 for(
unsigned t2=t1+1;t2<ntvs.size();t2++)
2919 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
2927 vecs.push_back(
vec);
2937 std::vector<std::vector<int> > re=
getvector(id_re,
l);
2939 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
2959 mts=
mabtv(hvs,mv,av,bv);
2963 nvl=
Nabv(lks,em,bv);
2965 ntsl=
nabtv(lks,nvl,em,bv);
2969 if(
solve.size() > 0)
3014 std::vector<int> pv;
3026static std::vector<std::vector<int> >
triface(poly
p,
int vert)
3029 std::vector<std::vector<int> > fvs0, fvs;
3030 vec.push_back(vert);
3034 for(
unsigned i=0;
i<fvs0.size();
i++)
3037 vec.push_back(vert);
3048 std::vector<std::vector<int> > vecs=
supports(
h),vs,vs0;
3086 for(
unsigned i=0;
i<fv1.size();
i++)
3089 ev.push_back(fv1[
i]);
3113static std::vector<std::vector<int> >
tetraface(poly
p, poly q,
int vert)
3116 std::vector<std::vector<int> > fvs1, fvs2, fvs;
3117 vec.push_back(vert);
3125 for(
unsigned i=0;
i<fvs2.size();
i++)
3128 vec.push_back(vert);
3138 std::vector<std::vector<int> > vecs=
supports(
h), vs1;
3150static std::vector<std::vector<int> >
penface(poly
p, poly q, poly
g,
int vert)
3153 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);
3154 std::vector<std::vector<int> > fvs1, fvs2, fvs3, fvs, evec;
3155 evec.push_back(ev1);
3156 evec.push_back(ev2);
3157 evec.push_back(ev3);
3158 for(
unsigned i=0;
i<evec.size();
i++)
3160 if(evec[
i].
size()==2)
3167 vec.push_back(vert);
3177 for(
unsigned i=0;
i<evec.size();
i++)
3179 if(evec[
i].
size()==2)
3184 for(
unsigned i=0;
i<fvs3.size();
i++)
3187 vec.push_back(vert);
3197 std::vector<std::vector<int> > vecs=
supports(
h), vs1, evec;
3198 evec.push_back(ev1);
3199 evec.push_back(ev2);
3200 evec.push_back(ev3);
3201 for(
unsigned i=0;
i<evec.size();
i++)
3203 if(evec[
i].
size()==2)
3226 for(
unsigned i=0;
i<vecs.size();
i++)
3267static std::vector<std::vector<int> >
vsMinusvs(std::vector<std::vector<int> > vs1, std::vector<std::vector<int> > vs2)
3269 std::vector<std::vector<int> > vs=vs1;
3270 for(
unsigned i=0;
i<vs2.size();
i++)
3277static std::vector<std::vector<int> >
vs_subsets(std::vector<std::vector<int> > vs)
3279 std::vector<std::vector<int> > sset, bv;
3280 for(
unsigned i=0;
i<vs.size();
i++)
3288static std::vector<std::vector<int> >
p_constant(ideal Xo, ideal Sigma)
3296static std::vector<std::vector<int> >
p_change(ideal Sigma)
3303static std::vector<std::vector<int> >
p_new(ideal Xo, ideal Sigma)
3321 fvs=
triface(Sigma->m[0], vert);
3325 fvs=
tetraface(Sigma->m[0], Sigma->m[1], vert);
3329 fvs=
penface(Sigma->m[0], Sigma->m[1], Sigma->m[2], vert);
3337 std::vector<int> ev;
3338 int ednum=vsig.size();
3341 vsig.push_back(
commonedge(sig->m[0], sig->m[1]));
3369static std::vector<std::vector<int> >
phi1(poly a, ideal Sigma)
3373 for(
unsigned i=0;
i<ss.size();
i++)
3376 if(
intvec.size()==av.size())
3385static std::vector<std::vector<int> >
phi2(poly a, ideal Xo, ideal Sigma)
3388 std::vector<std::vector<int> > ss=
p_new(Sigma, Xo), fvs;
3390 for(
unsigned i=0;
i<ss.size();
i++)
3393 if(
intvec.size()==av.size())
3402static std::vector<std::vector<int> >
links_new(poly a, ideal Xo, ideal Sigma,
int vert,
int ord)
3405 std::vector<std::vector<int> > lko, lkn, lk1, lk2;
3412 lk2=
phi2(a, Xo, Sigma);
3419 lkn=
phi2(a, Xo, Sigma);
3422 WerrorS(
"Cannot find the links smartly!");
3432 for(
unsigned i=0;
i<bs.size();
i++)
3447 std::vector<int> vp, iv=
phimagel(
v, v1, v2);
3459static int ifIso(poly
p, poly q, poly
f, poly
g, poly a, poly
b)
3462 std::vector<int> v1=
phimagel(vp, va, vb), v2=
phimagel(vq, va, vb), v3=
phimagel(vf, va, vb), v4=
phimagel(vg, va, vb);
3487static std::vector<int>
v_minus(std::vector<int> v1, std::vector<int> v2)
3489 std::vector<int>
vec;
3490 for(
unsigned i=0;
i<v1.size();
i++)
3492 vec.push_back(v1[
i]-v2[
i]);
3500 std::vector<int> av,bv;
3514static std::vector<std::vector<int> >
star(poly a, ideal
h)
3516 std::vector<std::vector<int> > st,X=
supports(
h);
3518 for(
unsigned i=0;
i<X.size();
i++)
3532 std::vector<std::vector<int> > vecs;
3534 vecs.push_back(
vec);
3555 vec_n.push_back(vert);
3556 for(
unsigned i=0;
i<lk.size();
i++)
3559 vecs_minus.push_back(
vec);
3560 for(
unsigned j=0;
j<bys.size();
j++)
3564 vecs_plus.push_back(
vec);
3575 std::vector<std::vector<int> > bset;
3576 for(
unsigned i=0;
i<bvs.size();
i++)
3578 for(
unsigned j=0;
j!=
i;
j++)
3580 vs.push_back(bvs[
j]);
3593 ideal ai=
p_a(
h), bi;
3645 ideal hh=(ideal)
h->Data();
3658 ideal hh=(ideal)
h->Data();
3672 ideal hh=(ideal)
h->Data();
3685 ideal h1= (ideal)
h->Data();
3689 poly
p= (poly)
h->Data();
3693 poly q= (poly)
h->Data();
3726 poly
p= (poly)
h->Data();
3730 poly q= (poly)
h->Data();
3744 poly
p= (poly)
h->Data();
3748 poly q= (poly)
h->Data();
3762 ideal h1= (ideal)
h->Data();
3775 ideal h1= (ideal)
h->Data();
3788 ideal h1= (ideal)
h->Data();
3801 ideal h1= (ideal)
h->Data();
3805 poly
p= (poly)
h->Data();
3819 ideal h1= (ideal)
h->Data();
3823 poly q= (poly)
h->Data();
3827 int d= (int)(
long)
h->Data();
3842 ideal h1= (ideal)
h->Data();
3846 poly
p= (poly)
h->Data();
3850 poly q= (poly)
h->Data();
3865 ideal h1= (ideal)
h->Data();
3869 poly
p= (poly)
h->Data();
3873 poly q= (poly)
h->Data();
3877 int d= (int)(
long)
h->Data();
3893 ideal h1= (ideal)
h->Data();
3897 poly
p= (poly)
h->Data();
3901 poly q= (poly)
h->Data();
3916 ideal h1= (ideal)
h->Data();
3920 poly
p= (poly)
h->Data();
3924 poly q= (poly)
h->Data();
3939 ideal h1= (ideal)
h->Data();
3943 poly
p= (poly)
h->Data();
3947 poly q= (poly)
h->Data();
3962 poly
p= (poly)
h->Data();
3966 ideal h1= (ideal)
h->Data();
3968 std::vector<std::vector<int> > vecs=
links(
p,h1);
3981 ideal h1= (ideal)
h->Data();
3994 ideal h1= (ideal)
h->Data();
3998 poly
p= (poly)
h->Data();
4002 int d= (int)(
long)
h->Data();
4017 ideal h1= (ideal)
h->Data();
4021 poly
p= (poly)
h->Data();
4025 poly q= (poly)
h->Data();
4029 int d= (int)(
long)
h->Data();
4045 ideal h1= (ideal)
h->Data();
4049 poly
p= (poly)
h->Data();
4053 poly q= (poly)
h->Data();
4057 poly
g= (poly)
h->Data();
4061 int d= (int)(
long)
h->Data();
4076 std::vector<int> bset,bs;
4077 std::vector<std::vector<int> > gset;
4080 int n= (int)(
long)
h->Data();
4084 ideal bi= (ideal)
h->Data();
4088 ideal gi= (ideal)
h->Data();
4093 bset.push_back(bs[0]);
4094 else if(bs.size()==0)
4098 WerrorS(
"Errors in T^1 Equations Solving!");
4106 std::vector<std::vector<int> > vecs=
eli2(n,bset,gset);
4120 ideal h1= (ideal)
h->Data();
4133 ideal h1= (ideal)
h->Data();
4137 poly
p= (poly)
h->Data();
4151 ideal h1= (ideal)
h->Data();
4155 poly
p= (poly)
h->Data();
4159 poly q= (poly)
h->Data();
4161 std::vector<std::vector<int> > vecs=
supports(h1);
4176 ideal h1= (ideal)
h->Data();
4180 poly
p= (poly)
h->Data();
4184 poly q= (poly)
h->Data();
4185 std::vector<std::vector<int> > vecs=
supports(h1), sbv,tnbr;
4187 std::vector<std::vector<int> > nvs=
Nabv(vecs, pv, qv);
4190 std::vector<int> tnv =
tnab(vecs,nvs,sbv);
4191 for(
unsigned i=0;
i<tnv.size();
i++)
4193 tnbr.push_back(nvs[tnv[
i]]);
4209 ideal h1= (ideal)
h->Data();
4213 ideal h2= (ideal)
h->Data();
4228 ideal h1= (ideal)
h->Data();
4232 poly
p= (poly)
h->Data();
4236 poly q= (poly)
h->Data();
4251 ideal h1= (ideal)
h->Data();
4255 poly
p= (poly)
h->Data();
4259 poly q= (poly)
h->Data();
4260 std::vector<std::vector<int> > hvs=
supports(h1), nv, ntvs;
4263 ntvs=
nabtv( hvs, nv, av, bv);
4264 std::vector<std::vector<poly> > pvs=
idMakei(nv,ntvs);
4266 for(
unsigned i=0;
i<pvs.size();
i++)
4286 poly a= (poly)
h->Data();
4290 ideal Xo= (ideal)
h->Data();
4294 ideal Sigma= (ideal)
h->Data();
4298 int vert= (int)(
long)
h->Data();
4302 int ord= (int)(
long)
h->Data();
4319 poly
p= (poly)
h->Data();
4323 ideal h1= (ideal)
h->Data();
4337 ideal h1= (ideal)
h->Data();
4341 ideal h2= (ideal)
h->Data();
4355 ideal h1= (ideal)
h->Data();
4368 ideal h1= (ideal)
h->Data();
4372 ideal h2= (ideal)
h->Data();
4386 poly
p= (poly)
h->Data();
4399 poly
p= (poly)
h->Data();
4412 ideal h1= (ideal)
h->Data();
4416 poly
p= (poly)
h->Data();
4430 ideal h1= (ideal)
h->Data();
4434 poly
p= (poly)
h->Data();
4435 std::vector<std::vector<int> > st=
star(
p, h1);
4436 std::vector<std::vector<int> > hvs=
supports(h1);
4437 std::vector<std::vector<int> > re=
vsMinusvs(hvs, st);
4451 ideal h1= (ideal)
h->Data();
4455 ideal h2= (ideal)
h->Data();
4469 poly
p= (poly)
h->Data();
4473 ideal h1= (ideal)
h->Data();
4487 ideal h2= (ideal)
h->Data();
4491 poly
p= (poly)
h->Data();
4505 ideal h1= (ideal)
h->Data();
4509 ideal h2= (ideal)
h->Data();
4523 ideal h1= (ideal)
h->Data();
4527 ideal h2= (ideal)
h->Data();
4541 poly
p= (poly)
h->Data();
4545 ideal h1= (ideal)
h->Data();
4549 poly a= (poly)
h->Data();
4553 poly
b= (poly)
h->Data();
4569 poly
p= (poly)
h->Data();
4573 poly q= (poly)
h->Data();
4577 poly
f= (poly)
h->Data();
4581 poly
g= (poly)
h->Data();
4585 poly a= (poly)
h->Data();
4589 poly
b= (poly)
h->Data();
4607 poly
p= (poly)
h->Data();
4611 int num= (int)(
long)
h->Data();
4625 ideal h1= (ideal)
h->Data();
4638 ideal h1= (ideal)
h->Data();
4651 ideal h1= (ideal)
h->Data();
4655 int num= (int)(
long)
h->Data();
4670 p->iiAddCproc(
"",
"findbset",
FALSE,
fb);
4671 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 > 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 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 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 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 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 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)
int SI_MOD_INIT cohomo(SModulFunctions *p)
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)
static int dim_sim(ideal h)
static std::vector< std::vector< int > > star(poly a, ideal h)
static BOOLEAN stellarremain(leftv res, leftv args)
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 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 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 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 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)
ideal idModulo(ideal h2, ideal h1, tHomog hom, intvec **w, matrix *T, GbVariant alg)
#define idDelete(H)
delete an ideal
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
ideal kStd2(ideal F, ideal Q, tHomog h, intvec **w, bigintmat *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
generic interface to GB/SB computations, large hilbert vectors
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
void rem(unsigned long *a, unsigned long *q, unsigned long p, int °a, int degq)
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 p_Mult_q(poly p, poly q, 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 poly p_New(const ring, omBin bin)
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