68 for(i=0;i<vec.size();i++)
70 Print(
" _[%d]=%d\n",i+1,vec[i]);
85 for(i=0;i<posMat.size();i++)
106 Print(
" [%d]\n",i+1);
119 for(
int i=0;
i<pv.size();
i++)
136 for(
int i=0;
i<pvs.size();
i++)
241 ideal asfmons,sfmons,mons,
p;
391 id_so=
idAdd(id_so, id_re);
397 PrintS(
"It is not simplex.\n");
398 PrintS(
"This is the simplicial complex:\n");
402 PrintS(
"It is simplex.\n");
422 ideal h2=
idAdd(h,h1);
430 PrintS(
"This is the simplicial complex:\n");
442 bool IsinL(
int a,std::vector<int> badset)
445 for(i=0;i<badset.size();i++)
463 std::vector<int> inte;
464 for(i=0;i<p.size();i++)
467 inte.push_back(p[i]);
482 bool vEv(std::vector<int> vec1,std::vector<int> vec2)
485 int lg1=vec1.size(),lg2=vec2.size();
492 for(j=0;j<vec1.size();j++)
505 bool vsubset(std::vector<int> vec1,std::vector<int> vec2)
508 if(vec1.size()>vec2.size())
510 for(i=0;i<vec1.size();i++)
512 if(!
IsinL(vec1[i],vec2))
519 bool vEvl(std::vector<int> vec1,std::vector<int> vec2)
521 if(vec1.size()==0 && vec2.size()==0)
531 bool vInvsl(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
534 for(i=0;i<vecs.size();i++)
536 if(
vEvl(vec,vecs[i]))
548 int vInvs(std::vector<int>
vec, std::vector<std::vector<int> > vecs)
551 for(i=0;i<vecs.size();i++)
567 std::vector<int>
vecUnion(std::vector<int> vec1, std::vector<int> vec2)
569 std::vector<int>
vec=vec1;
571 for(i=0;i<vec2.size();i++)
573 if(!
IsinL(vec2[i],vec))
574 vec.push_back(vec2[i]);
581 std::vector<int>
vecMinus(std::vector<int> vec1,std::vector<int> vec2)
583 std::vector<int>
vec;
584 for(
int i=0;
i<vec1.size();
i++)
588 vec.push_back(vec1[i]);
611 std::vector<int> supset;
625 std::vector<std::vector<int> > vecs;
626 std::vector<int>
vec;
687 std::vector<std::vector<int> > hvs=
supports(h);
694 if(
vInvsl(v,hvs)&&in.size()==0)
716 bool mabconditionv(std::vector<std::vector<int> > hvs,std::vector<int> pv,std::vector<int> av,std::vector<int> bv)
718 std::vector<int> uv=
vecUnion(pv,av);
732 std::vector<std::vector<int> >
Mabv(ideal
h,poly a,poly
b)
735 std::vector<std::vector<int> > vecs;
745 std::vector<std::vector<int> > hvs=
supports(h);
746 std::vector<std::vector<int> > h2v=
supports(h2);
747 std::vector<int>
vec;
748 for(
int i=0;
i<h2v.size();
i++)
776 std::vector<int>
eli1(std::vector<int> eq1,std::vector<int> eq2)
795 std::vector<std::vector<int> >
soleli1( std::vector<std::vector<int> > eqs)
797 int i,
j;std::vector<std::vector<int> > re;
798 std::vector<std::vector<int> > pre=eqs,ppre;
801 re.push_back(eqs[0]);
802 pre.erase(pre.begin());
805 std::vector<int> yaya;
806 for(i=0;i<re.size(),pre.size()>0;i++)
808 yaya=
eli1(re[i],pre[0]);
811 for(j=1;j<pre.size();j++)
814 ppre.push_back(
eli1(re[i],pre[j]));
825 std::vector<int>
freevars(
int n, std::vector<int> bset, std::vector<std::vector<int> > gset)
829 std::vector<int>
mvar;
830 std::vector<int> fvar;
834 mvar.push_back(bset[i]);
838 mvar.push_back(gset[i][0]);
852 std::vector<int>
fvarsvalue(
int vnum, std::vector<int> fvars)
854 int i;std::vector<int> fset=fvars;
855 for(i=0;i<fset.size();i++)
859 fset.erase(fset.begin()+
i);
869 std::vector<std::vector<int> >
vAbsorb( std::vector<int> bset,std::vector<std::vector<int> > gset)
872 std::vector<int> badset=bset;
873 int bl=badset.size();
880 if(gset[j][0]==m && !
IsinL(gset[j][1],badset))
882 badset.push_back(gset[j][1]);
883 gset.erase(gset.begin()+
j);
888 else if(!
IsinL(gset[j][0],badset) && gset[
j][1]==
m)
890 badset.push_back(gset[j][0]);
891 gset.erase(gset.begin()+
j);
896 else if(
IsinL(gset[j][0],badset) &&
IsinL(gset[j][1],badset))
898 gset.erase(gset.begin()+
j);
908 if(badset.size()==0) badset.push_back(0);
909 gset.push_back(badset);
922 std::vector<int>
base;
940 std::vector<int>
vec;
954 std::vector<int>
vec;
967 std::vector<int>
ofindbases1(
int num,
int vnum, std::vector<int> bset,std::vector<std::vector<int> > gset)
969 int i,
j,
m;std::vector<std::vector<int> > goodset;
970 std::vector<int> fvars=
freevars(num, bset, gset);
971 std::vector<int> zset=
fvarsvalue(vnum, fvars);
973 std::vector<int> oset;
974 oset.push_back(vnum);
976 oset=goodset[goodset.size()-1];
977 goodset.erase(goodset.end());
999 std::vector<std::vector<int> >
ofindbases(
int num, std::vector<int> bset,std::vector<std::vector<int> > gset)
1002 std::vector<int> base1;
1003 std::vector<std::vector<int> > bases;
1004 std::vector<int> fvars=
freevars(num, bset, gset);
1005 if (fvars.size()==0)
1008 bases.push_back(base1);
1012 for(i=0;i<fvars.size();i++)
1016 bases.push_back(base1);
1034 std::vector<std::vector<int> >
eli2(
int num,std::vector<int> bset,std::vector<std::vector<int> > gset)
1037 std::vector<int> badset;
1038 std::vector<std::vector<int> > goodset;
1039 std::vector<std::vector<int> >
solve;
1047 int m=goodset.size();
1048 badset=goodset[m-1];
1049 goodset.erase(goodset.end());
1077 int n=vbase.size();poly
p,q=0;
1078 for(
int i=0;
i<n;
i++)
1094 ideal
idMake(std::vector<std::vector<int> > vecs)
1096 int lv=vecs.size();poly
p;
1164 std::vector<int> vbase;
1169 vbase.push_back(
pcoef(p,i));
1183 std::vector<int>
vec;
1184 std::vector<std::vector<int> > vecs;
1189 vecs.push_back(vec);
1197 std::vector<std::vector<int> >
vecqring(std::vector<std::vector<int> > vec1, std::vector<std::vector<int> > vec2)
1205 std::vector<std::vector<int> > vecs=
vsMake(h);
1215 std::vector<std::vector<int> >
links(poly a, ideal
h)
1218 std::vector<std::vector<int> > lk,X=
supports(h);
1219 std::vector<int> U,In,av=
support1(a);
1220 for(i=0;i<X.size();i++)
1230 if( In.size()==0 &&
vInvsl(U,X))
1308 std::vector<std::vector<int> >
listsinsertlist(std::vector<std::vector<int> > gset,
int a,
int b)
1310 std::vector<int> eq;
1323 std::vector<int> equation;
1324 equation.push_back(i);
1325 equation.push_back(j);
1326 equation.push_back(t);
1340 int n=vbase.size();poly
p,q=0;
1343 for(
int i=0;
i<3;
i++)
1362 ideal
idMake3(std::vector<std::vector<int> > vecs)
1366 int i,lv=vecs.size();
1393 tt=(
char**)
omAlloc(num*
sizeof(
char *));
1394 for(i=0; i <
num; i++)
1397 sprintf (tt[i],
"t(%d)", i+1);
1410 std::vector<int>
subspace1(std::vector<std::vector<int> > mv, std::vector<int> bv)
1414 std::vector<int>
base;
1415 std::vector<int> pv;
1418 if(
IsinL(bv[0],mv[i]))
1439 for(
int i=0;
i<n;
i++)
1452 ideal
idMaken(std::vector<std::vector<int> > vecs)
1456 int i,lv=vecs.size();
1483 std::vector<poly>
pMakei(std::vector<std::vector<int> > mv,std::vector<int> vbase)
1486 std::vector<poly> h1;
1488 for(
int i=0;
i<n;
i++)
1497 std::vector<std::vector<poly> >
idMakei(std::vector<std::vector<int> > mv,std::vector<std::vector<int> > vecs)
1499 int i,lv=vecs.size();
1500 std::vector<std::vector<poly> > re;
1501 std::vector<poly>
h;
1526 std::vector<std::vector<int> > hvs=
supports(h);
1530 std::vector<std::vector<int> > sbv=
supports(sub);
1532 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
1533 PrintS(
"The homophisim is map onto the set:\n");
1536 std::vector<std::vector<int> > good;
1537 std::vector<int>
bad,vv;
1564 std::vector<std::vector<int> >
solve=
eli2(m,bad,good);
1567 PrintS(
"This is the solution of coefficients:\n");
1575 std::vector<std::vector<int> > suu;
1578 std::vector<std::vector<int> > solves=
vecqring(solve,suu);
1579 PrintS(
"This is the solution of coefficients:\n");
1586 PrintS(
"No element considered!\n");
1622 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)
1640 bool condition3for2(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
1642 std::vector<int> v1,v2,v3;
1677 WerrorS(
"presolve.lib are not loaded!");
1687 ideal re=(ideal)L->
m[4].
CopyD();
1701 std::vector<int> fvar;
1723 std::vector<std::vector<int> > vecs;
1724 std::vector<int>
vec;
1735 vecs.push_back(vec);
1747 std::vector<int>
vec;
1748 std::vector<std::vector<int> > vecs;
1755 std::vector<int> fvar=
numfree(h1);
1801 vecs.push_back(vec);
1824 std::vector<int>
findalpha(std::vector<std::vector<int> > mv, std::vector<int> bv)
1826 std::vector<int> alset;
1827 for(
int i=0;
i<mv.size();
i++)
1850 std::vector<int> subase;
1857 subase.push_back(1);
1861 subase.push_back(-1);
1865 subase.push_back(0);
1877 std::vector<std::vector<int> >
subspacet(std::vector<std::vector<int> > mv, std::vector<int> bv,std::vector<std::vector<int> > ntvs)
1880 std::vector<int> alset=
findalpha(mv,bv);
1881 std::vector<int> subase;
1882 std::vector<std::vector<int> > subases;
1883 for(i=0;i<alset.size();i++)
1886 subases.push_back(subase);
1897 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)
1899 std::vector<int> v1,var;
1900 std::vector<std::vector<int> > vars;
1901 for(
int i=0;
i<Mv.size();
i++)
1903 for(
int j=
i+1;
j<Mv.size();
j++)
1911 vars.push_back(var);
1926 std::vector<std::vector<int> > hvs=
supports(h);
1930 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
1931 std::vector<std::vector<int> > mts=
mabtv(hvs,mv,av,bv);
1932 PrintS(
"The homomorphism should map onto:\n");
1936 std::vector<std::vector<int> > vecs,vars;
1937 std::vector<int>
vec,var;
1940 vars=
mabtv(hvs,mv,av,bv);
1942 for(t0=0;t0<vars.size();t0++)
1953 vecs.push_back(vec);
1963 vecs.push_back(vec);
1966 for(t1=t0+1;t1<vars.size();t1++)
1968 for(t2=t1+1;t2<vars.size();t2++)
1970 if(vars[t0][0]==vars[t1][0]&&vars[t1][1]==vars[t2][1]&&vars[t0][1]==vars[t2][0])
1978 vecs.push_back(vec);
1990 std::vector<std::vector<int> > re=
getvector(id_re,vn);
1991 PrintS(
"this is the solution for ideal :\n");
1994 std::vector<std::vector<int> > sub=
subspacet(mv, bv,vars);
1995 PrintS(
"this is the solution for subspace:\n");
1999 PrintS(
"This is the solution of coefficients:\n");
2005 PrintS(
"No element considered!");
2055 bool nabconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2058 std::vector<int> vec2=
vecUnion(pv,bv);
2075 std::vector<std::vector<int> >
Nabv(std::vector<std::vector<int> > hvs, std::vector<int> av, std::vector<int> bv)
2077 std::vector<std::vector<int> > vecs;
2082 vecs.push_back(hvs[i]);
2094 bool nabtconditionv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> av, std::vector<int> bv)
2096 std::vector<int> v1;
2109 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)
2111 std::vector<int> v1,var;
2112 std::vector<std::vector<int> > vars;
2113 for(
int i=0;
i<Nv.size();
i++)
2115 for(
int j=
i+1;
j<Nv.size();
j++)
2122 vars.push_back(var);
2140 bool tNab(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<std::vector<int> > bvs)
2142 std::vector<int> sv;
2143 if(bvs.size()<=1)
return false;
2144 for(
int i=0;
i<bvs.size();
i++)
2163 std::vector<int>
tnab(std::vector<std::vector<int> > hvs,std::vector<std::vector<int> > nvs,std::vector<std::vector<int> > bvs)
2165 std::vector<int> pv;
2166 std::vector<int>
vec;
2167 for(
int j=0;
j<nvs.size();
j++)
2170 if(
tNab(hvs, pv, bvs))
2186 std::vector<int>
phimage(std::vector<int> pv, std::vector<int> av, std::vector<int> bv)
2188 std::vector<int> qv=
vecUnion(pv,av);
2197 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)
2199 std::vector<int> pv;
2200 std::vector<int>
base;
2201 std::vector<std::vector<int> > bases;
2202 for(
int t=0;t<vecs.size();t++)
2204 for(
int i=0;
i<mvs.size();
i++)
2207 for(
int j=0;
j<nvs.size();
j++)
2210 base.push_back(vecs[t][j]);
2213 if(base.size()!=mvs.size())
2215 WerrorS(
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1");
2218 WerrorS(
"Errors in Nab set!");
2221 bases.push_back(base);
2249 int b=vecs[0].size();
2298 std::vector<std::vector<int> > vecs=
supports(ids);
2315 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
2324 for(i=0;i<index.size();i++)
2339 std::vector<int>
vec;
2340 std::vector<std::vector<int> > solsm;
2341 std::vector<int> solm;
2342 for(i=0;i<
solve.size();i++)
2345 for(j=0;j<vec.size();j++)
2348 solm.push_back(vec[j]);
2350 solsm.push_back(solm);
2362 std::vector<std::vector<int> > hvs=
supports(h);
2369 std::vector<std::vector<int> > sbv=
supports(sub);
2371 std::vector<std::vector<int> > nv=
Nabv(hvs,av,bv);
2374 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
2382 std::vector<std::vector<int> > good,
solve;
2383 std::vector<int>
bad;
2385 std::vector<int> tnv;
2388 tnv=
tnab(hvs,nv,sbv);
2389 for(i=0;i<tnv.size();i++)
2392 bad.push_back(co+1);
2408 solve=
eli2(n,bad,good);
2416 std::vector<int> su=
make1(n);
2417 std::vector<std::vector<int> > suu;
2425 solve=
value1(mv,nv,solve,av,bv);
2475 ideal bi=
findb(h),ai;
2479 std::vector<std::vector<int> >
solve;
2482 PrintS(
"This is aset according to:");
2501 Print(
"Finished %d!\n",mm);
2510 bool condition2for2nv(std::vector<std::vector<int> > hvs, std::vector<int> pv, std::vector<int> qv, std::vector<int> fv)
2528 std::vector<int>
findalphan(std::vector<std::vector<int> >
N, std::vector<int> tN)
2530 int i;std::vector<int> alset,
vec;
2531 for(i=0;i<
N.size();i++)
2547 std::vector<std::vector<int> >
subspacetn(std::vector<std::vector<int> >
N, std::vector<int> tN, std::vector<std::vector<int> > ntvs)
2551 std::vector<int> subase;
2552 std::vector<std::vector<int> > subases;
2553 for(i=0;i<alset.size();i++)
2556 subases.push_back(subase);
2569 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)
2571 std::vector<int> pv,qv;
2572 std::vector<int>
base;
2574 std::vector<std::vector<int> > bases;
2582 for(
int t=0;t<vecs.size();t++)
2584 for(
int i=0;
i<mts.size();
i++)
2597 for(
int j=0;
j<nts.size();
j++)
2604 if(
vEvl(pv,nvs[row])&&
vEvl(qv,nvs[col]))
2606 base.push_back(vecs[t][
j]);
break;
2613 base.push_back(-vecs[t][
j]);
break;
2621 if(base.size()!=mts.size())
2623 WerrorS(
"Errors in Nab set!");
2628 bases.push_back(base);
2640 std::vector<std::vector<int> > hvs=
supports(h);
2642 std::vector<std::vector<int> > mv=
Mabv(h,a,b), mts=
mabtv(hvs,mv,av,bv);
2643 std::vector<std::vector<poly> > pvs=
idMakei(mv,mts);
2645 for(i=0;i<pvs.size();i++)
2666 std::vector<std::vector<int> > hvs=
supports(h);
2670 std::vector<std::vector<int> > sbv=
supports(sub);
2671 std::vector<std::vector<int> > nv=
Nabv(hvs,av,bv);
2673 std::vector<int> tnv=
tnab(hvs,nv,sbv);
2675 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
2676 std::vector<std::vector<int> > mts=
mabtv(hvs,mv,av,bv);
2681 std::vector<std::vector<int> > vecs,vars,ntvs;
2682 std::vector<int>
vec,var;
2683 std::vector<std::vector<int> >
solve;
2686 ntvs=
nabtv( hvs, nv, av, bv);
2690 for(
int t0=0;t0<
l;t0++)
2694 if(
tNab(hvs,nv[i],sbv)&&
tNab(hvs,nv[j],sbv))
2700 vecs.push_back(vec);
2703 for(
int t1=t0+1;t1<ntvs.size();t1++)
2705 for(
int t2=t1+1;t2<ntvs.size();t2++)
2707 if(ntvs[t0][0]==ntvs[t1][0]&&ntvs[t1][1]==ntvs[t2][1]&&ntvs[t0][1]==ntvs[t2][0])
2715 vecs.push_back(vec);
2728 std::vector<std::vector<int> > re=
getvector(id_re,l);
2732 std::vector<std::vector<int> > sub=
subspacetn(nv, tnv,ntvs);
2740 solve=
value2(mv,nv,mts,ntvs,solve,av,bv);
2756 ideal bi=
findb(h),ai;
2760 std::vector<int> bv,av;
2761 std::vector<std::vector<int> >
solve;
2773 PrintS(
"This is a set according to current b:\n");
2790 Print(
"There are %d graded pieces in total.\n",
gp);
2800 std::vector<std::vector<int> > hvs=
supports(h);
2803 std::vector<std::vector<int> >
vec=
links(a, h);
2804 PrintS(
"This is the links of a:\n");
2807 PrintS(
"This is the links of a(ideal version):\n");
2810 PrintS(
"1************************************************\n");
2811 PrintS(
"This is T_1 (m):\n");
2813 PrintS(
"2************************************************\n");
2814 PrintS(
"This is T_2 (m):\n");
2816 PrintS(
"3************************************************\n");
2817 PrintS(
"This is T_1 (n):\n");
2819 PrintS(
"4************************************************\n");
2820 PrintS(
"This is T_2 (n):\n");
2843 std::vector<std::vector<int> > mv=
Mabv(h,a,b);
2849 std::vector<int>
v_minus(std::vector<int> v1, std::vector<int> v2)
2851 std::vector<int>
vec;
2852 for(
int i=0;
i<v1.size();
i++)
2854 vec.push_back(v1[
i]-v2[
i]);
2863 std::vector<int> av,bv;
2913 ideal hh=(ideal)h->
Data();
2928 ideal h1= (ideal)h->
Data();
2933 poly
p= (poly)h->
Data();
2937 poly q= (poly)h->
Data();
2950 std::vector<int> dg=
gdegree(a,b);
2979 poly
p= (poly)h->
Data();
2983 poly q= (poly)h->
Data();
2998 ideal h1= (ideal)h->
Data();
3012 ideal h1= (ideal)h->
Data();
3016 poly q= (poly)h->
Data();
3020 int d= (int)(
long)h->
Data();
3035 ideal h1= (ideal)h->
Data();
3039 poly
p= (poly)h->
Data();
3043 poly q= (poly)h->
Data();
3059 ideal h1= (ideal)h->
Data();
3063 poly
p= (poly)h->
Data();
3067 poly q= (poly)h->
Data();
3082 ideal h1= (ideal)h->
Data();
3086 poly
p= (poly)h->
Data();
3090 poly q= (poly)h->
Data();
3105 poly
p= (poly)h->
Data();
3109 ideal h1= (ideal)h->
Data();
3111 std::vector<std::vector<int> > vecs=
links(p,h1);
ideal mingens(ideal h, poly a, poly b)
intvec * gradedpiece1n(ideal h, poly a, poly b)
ideal scKBase(int deg, ideal s, ideal Q, intvec *mv)
std::vector< std::vector< int > > vAbsorb(std::vector< int > bset, std::vector< std::vector< int > > gset)
void listprint(std::vector< int > vec)
BOOLEAN fb(leftv res, leftv args)
const CanonicalForm int s
idhdl ggetid(const char *n)
Class used for (list of) interpreter objects.
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
ideal makemab(ideal h, poly a, poly b)
ideal idMake(std::vector< std::vector< int > > vecs)
intvec * gradedpiece2n(ideal h, poly a, poly b)
intvec * Tmat(std::vector< std::vector< int > > vecs)
BOOLEAN idcomplement(leftv res, leftv args)
ideal genst(ideal h, poly a, poly b)
std::vector< int > v_minus(std::vector< int > v1, std::vector< int > v2)
int vInvs(std::vector< int > vec, std::vector< std::vector< int > > vecs)
poly pMaken(std::vector< int > vbase)
BOOLEAN Links(leftv res, leftv args)
static short rVar(const ring r)
#define rVar(r) (r->N)
std::vector< std::vector< int > > ofindbases(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
std::vector< int > gensindex(ideal M, ideal ids)
static poly pp_Mult_mm(poly p, poly m, const ring r)
ideal getpresolve(ideal h)
std::vector< std::vector< int > > vecqring(std::vector< std::vector< int > > vec1, std::vector< std::vector< int > > vec2)
ideal kStd(ideal F, ideal Q, tHomog h, intvec **w, intvec *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
std::vector< int > phimage(std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
void lpsprint(std::vector< std::vector< poly > > pvs)
poly p_Subst(poly p, int n, poly e, const ring r)
std::vector< poly > pMakei(std::vector< std::vector< int > > mv, std::vector< int > vbase)
ideal finda(ideal h, poly S, int ddeg)
bool solve(int **extmat, int nrows, int ncols)
std::vector< std::vector< int > > eli2(int num, std::vector< int > bset, std::vector< std::vector< int > > gset)
void WerrorS(const char *s)
std::vector< int > vecUnion(std::vector< int > vec1, std::vector< int > vec2)
void Tlink(ideal h, poly a, poly b, int n)
std::vector< int > makeequation(int i, int j, int t)
std::vector< std::vector< int > > links(poly a, ideal h)
poly pMake3(std::vector< int > vbase)
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy ...
std::vector< int > eli1(std::vector< int > eq1, std::vector< int > eq2)
ideal id_MaxIdeal(const ring r)
initialise the maximal ideal (at 0)
BOOLEAN gd(leftv res, leftv args)
intvec * dmat(poly a, poly b)
std::vector< int > fvarsvalue(int vnum, std::vector< int > fvars)
bool nabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
bool condition1for2(std::vector< int > pv, std::vector< int > qv, std::vector< int > bv)
bool IsinL(int a, std::vector< int > badset)
bool condition3for2(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< poly > > idMakei(std::vector< std::vector< int > > mv, std::vector< std::vector< int > > vecs)
std::vector< int > make1(int n)
std::vector< int > vecIntersection(std::vector< int > p, std::vector< int > q)
std::vector< std::vector< int > > listsinsertlist(std::vector< std::vector< int > > gset, int a, int b)
std::vector< std::vector< int > > subspacetn(std::vector< std::vector< int > > N, std::vector< int > tN, std::vector< std::vector< int > > ntvs)
std::vector< std::vector< int > > Mabv(ideal h, poly a, poly b)
#define pGetExp(p, i)
Exponent.
ideal idMinus(ideal h1, ideal h2)
ideal id_complement(ideal h)
idhdl enterid(const char *s, int lev, int t, idhdl *root, BOOLEAN init, BOOLEAN search)
ideal idMake3(std::vector< std::vector< int > > vecs)
Coefficient rings, fields and other domains suitable for Singular polynomials.
poly pMake(std::vector< int > vbase)
static FORCE_INLINE long n_Int(number &n, const coeffs r)
conversion of n to an int; 0 if not possible in Z/pZ: the representing int lying in (-p/2 ...
const CanonicalForm CFMap CFMap & N
void firstorderdef_setup(SModulFunctions *p)
static long p_GetExp(const poly p, const unsigned long iBitmask, const int VarOffset)
get a single variable exponent : the integer VarOffset encodes:
BOOLEAN sgp(leftv res, leftv args)
static int max(int a, int b)
BOOLEAN fa(leftv res, leftv args)
static long pTotaldegree(poly p)
The main handler for Singular numbers which are suitable for Singular polynomials.
std::vector< int > subspace1(std::vector< std::vector< int > > mv, std::vector< int > bv)
void gradedpiece1(ideal h, poly a, poly b)
bool condition2for2(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > sv, std::vector< int > av, std::vector< int > bv)
BOOLEAN genstt(leftv res, leftv args)
std::vector< std::vector< int > > subspacet(std::vector< std::vector< int > > mv, std::vector< int > bv, std::vector< std::vector< int > > ntvs)
ideal sfreemon(ideal h, int deg)
std::vector< std::vector< int > > nabtv(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > Nv, std::vector< int > av, std::vector< int > bv)
bool vsubset(std::vector< int > vec1, std::vector< int > vec2)
ideal complementsimplex(ideal h)
static BOOLEAN p_DivisibleBy(poly a, poly b, const ring r)
BOOLEAN idInsertPoly(ideal h1, poly h2)
insert h2 into h1 (if h2 is not the zero polynomial) return TRUE iff h2 was indeed inserted ...
std::vector< int > freevars(int n, std::vector< int > bset, std::vector< std::vector< int > > gset)
std::vector< std::vector< int > > vsMake(ideal h)
bool tNab(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< std::vector< int > > bvs)
void PrintS(const char *s)
BOOLEAN fgp(leftv res, leftv args)
std::vector< int > vecMinus(std::vector< int > vec1, std::vector< int > vec2)
void lpprint(std::vector< poly > pv)
bool mabconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > av, std::vector< int > bv)
bool vInvsl(std::vector< int > vec, std::vector< std::vector< int > > vecs)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
std::vector< std::vector< int > > minisolve(std::vector< std::vector< int > > solve, std::vector< int > index)
std::vector< int > support1(poly p)
BOOLEAN p_EqualPolys(poly p1, poly p2, const ring r)
std::vector< int > make0(int n)
static int index(p_Length length, p_Ord ord)
void rChangeCurrRing(ring r)
std::vector< std::vector< int > > mabtv(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > Mv, std::vector< int > av, std::vector< int > bv)
static FORCE_INLINE coeffs nCopyCoeff(const coeffs r)
"copy" coeffs, i.e. increment ref
std::vector< std::vector< int > > soleli1(std::vector< std::vector< int > > eqs)
ideal idInit(int idsize, int rank)
initialise an ideal / module
const Variable & v
< [in] a sqrfree bivariate poly
BOOLEAN iiMake_proc(idhdl pn, package pack, leftv sl)
void listsprint(std::vector< std::vector< int > > posMat)
std::vector< std::vector< int > > canonicalbase(int n)
std::vector< std::vector< int > > supports(ideal h)
ideal idmodulo(ideal h1, ideal h2)
ideal id_Add(ideal h1, ideal h2, const ring r)
h1 + h2
ideal idMaken(std::vector< std::vector< int > > vecs)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
std::vector< int > findalpha(std::vector< std::vector< int > > mv, std::vector< int > bv)
std::vector< int > numfree(ideal h)
bool nabtconditionv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > value2(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > mts, std::vector< std::vector< int > > nts, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
std::vector< std::vector< int > > getvector(ideal h, int n)
void gradedpiece2(ideal h, poly a, poly b)
BOOLEAN idsr(leftv res, leftv args)
std::vector< int > tnab(std::vector< std::vector< int > > hvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > bvs)
std::vector< std::vector< int > > Nabv(std::vector< std::vector< int > > hvs, std::vector< int > av, std::vector< int > bv)
bool vEvl(std::vector< int > vec1, std::vector< int > vec2)
std::vector< int > ofindbases1(int num, int vnum, std::vector< int > bset, std::vector< std::vector< int > > gset)
ideal idAdd(ideal h1, ideal h2)
h1 + h2
int(* iiAddCproc)(const char *libname, const char *procname, BOOLEAN pstatic, BOOLEAN(*func)(leftv res, leftv v))
int SI_MOD_INIT() stanleyreisnerlib(SModulFunctions *p)
std::vector< int > findalphan(std::vector< std::vector< int > > N, std::vector< int > tN)
bool condition2for2nv(std::vector< std::vector< int > > hvs, std::vector< int > pv, std::vector< int > qv, std::vector< int > fv)
#define IMATELEM(M, I, J)
std::vector< int > vecbase1(int num, std::vector< int > oset)
std::vector< std::vector< int > > value1(std::vector< std::vector< int > > mvs, std::vector< std::vector< int > > nvs, std::vector< std::vector< int > > vecs, std::vector< int > av, std::vector< int > bv)
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
std::vector< int > vMake(poly p)
ideal qringadd(ideal h1, ideal h2, int deg)
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
std::vector< int > gdegree(poly a, poly b)
std::vector< int > subspacet1(int num, std::vector< std::vector< int > > ntvs)
#define pCopy(p)
return a copy of the poly
bool vEv(std::vector< int > vec1, std::vector< int > vec2)