Changeset 7161aca in git for Singular/LIB/JMBTest.lib


Ignore:
Timestamp:
Aug 12, 2019, 11:10:44 AM (5 years ago)
Author:
Karim Abou Zeid <karim23697@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
8307d2d92aa305b1a9b4e0c9353dfc467f913461
Parents:
d4cec6ab781a81162945ff680935242fcccc952ab258e2adb78434353acc85388a6c40c626c4b5ee
Message:
Merge branch 'spielwiese' into stable
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/JMBTest.lib

    rd4cec6a r7161aca  
    107107int aJ=deg(f.h);
    108108// minimal degree of polynomials in G
    109 //print(aJ);
    110109list V=list();
    111110V[1]=Terns(G,1);
     
    227226//Compare degrees;
    228227      d=-1;
    229       //print("Per Grado");
    230228     }
    231229  if(deg(P.h)==deg(Q.h))
     
    237235//head=tail
    238236               d=0;
    239                //print("Uguali");
    240237              }
    241238         }
     
    495492       }
    496493   I=M[1..size(M)];
    497 //print("IdealOfV");
    498494  //I=std(I);
    499495  }
     
    538534EXAMPLE:  example NewWeight; shows an example"
    539535{
    540 //multiply and reduce, degree by degree
    541 intvec u=NewWeight(nvars(r)+1);
    542 list L=ringlist(r);
    543 L[2]=insert(L[2],"t",size(L[2]));
    544 //print(L[2]);
    545 list ordlist="a",u;
    546 L[3]=insert(L[3],ordlist,0);
    547 def H=ring(L);
    548 //print(V1);
    549 //print(G1);
    550 list M=list();
    551 jmp p;
    552 list N;
    553 poly q;
    554 poly s;
    555 int i;
    556 int j;
    557 for(i=1; i<=size(G1); i++)
    558    {
    559            N=list();
    560            for(j=1; j<=size(G1[i]); j++)
    561               {
    562                 p=G1[i][j];
    563                 q=p.h;
    564                 s=p.t;
    565                 N[j]=list(q,s);
    566                }
    567            M[i]=N;
    568     }
    569 p.h=poly(0);
    570 p.t=poly(0);
    571 setring H;
    572 list R=list();
    573 list S=list();
    574 //print("anello definito");
    575 def V=imap(r,V1);
    576 //def G=imap(r,G1);
    577 //print(V);
    578 def MM=imap(r,M);
    579 list G=list();
    580 list N=list();
    581 for(i=1; i<=size(MM); i++)
    582    {
    583            for(j=1; j<=size(MM[i]); j++)
    584               {
    585                 p.h=MM[i][j][1];
    586                 p.t=MM[i][j][2];
    587                 N[j]=p;
    588                }
    589            G[i]=N;
    590     }
    591 ideal I=0;
    592 jmp LL;
    593 jmp UU;
    594  for(i=1; i<=size(V);i++)
    595     {
    596        R[i]=list();
    597        S[i]=list();
    598        I=0;
    599        for(j=1;j<=size(V[i]); j++)
    600           {
    601             LL=Multiply(V[i][j],G);
    602             LL.t=reduce(t*LL.t,I);
    603 //I only reduce the tail
    604               LL.t=subst(LL.t,t,1);
    605               S[i]=insert(S[i],LL,size(S[i]));
    606               LL.h=t*LL.h;
    607             R[i]=insert(R[i],LL,size(R[i]));
    608              UU=R[i][j];
    609               I=I+ideal(UU.h+UU.t);
    610               attrib(I,"isSB",1);
    611           }
    612     }
    613 list M=list();
    614 poly q;
    615 poly s;
    616 for(i=1; i<=size(S); i++)
    617    {
    618            N=list();
    619            for(j=1; j<=size(S[i]); j++)
    620               {
    621                 p=S[i][j];
    622                 q=p.h;
    623                 s=p.t;
    624                 N[j]=list(q,s);
    625                }
    626            M[i]=N;
    627     }
    628 p.h=poly(0);
    629 p.t=poly(0);
    630 setring r;
    631 def MM=imap(H,M);
    632 list MMM=list();
    633 for(i=1; i<=size(MM); i++)
    634    {
    635            N=list();
    636            for(j=1; j<=size(MM[i]); j++)
    637               {
    638                 p.h=MM[i][j][1];
    639                 p.t=MM[i][j][2];
    640                 N[j]=p;
    641                }
    642            MMM[i]=N;
    643     }
    644 return(MMM);
    645 }
    646 example
    647 { "EXAMPLE:"; echo = 2;
    648  ring r=0, (x,y,z), rp;
    649 jmp r1;
    650 r1.h=z^3;
    651 r1.t=poly(0);
    652 jmp r2;
    653 r2.h=z^2*y;
    654 r2.t=poly(0);
    655 jmp r3;
    656 r3.h=z*y^2 ;
    657 r3.t=-x^2*y;
    658 jmp r4;
    659 r4.h=y^5;
    660 r4.t=poly(0);
    661 list G2F=list(list(r1,r2,r3),list(r4));
     536  //multiply and reduce, degree by degree
     537  intvec u=NewWeight(nvars(r)+1);
     538  list L=ringlist(r);
     539  L[2]=insert(L[2],"t",size(L[2]));
     540  list ordlist="a",u;
     541  L[3]=insert(L[3],ordlist,0);
     542  def H=ring(L);
     543  list M=list();
     544  jmp p;
     545  list N;
     546  poly q;
     547  poly s;
     548  int i;
     549  int j;
     550  for(i=1; i<=size(G1); i++)
     551  {
     552    N=list();
     553    for(j=1; j<=size(G1[i]); j++)
     554    {
     555      p=G1[i][j];
     556      q=p.h;
     557      s=p.t;
     558      N[j]=list(q,s);
     559    }
     560    M[i]=N;
     561  }
     562  p.h=poly(0);
     563  p.t=poly(0);
     564  setring H;
     565  list R=list();
     566  list S=list();
     567  //print("anello definito");
     568  def V=imap(r,V1);
     569  //def G=imap(r,G1);
     570  //print(V);
     571  def MM=imap(r,M);
     572  list G=list();
     573  list N=list();
     574  for(i=1; i<=size(MM); i++)
     575  {
     576    for(j=1; j<=size(MM[i]); j++)
     577    {
     578      p.h=MM[i][j][1];
     579      p.t=MM[i][j][2];
     580      N[j]=p;
     581    }
     582    G[i]=N;
     583  }
     584  ideal I=0;
     585  jmp LL;
     586  jmp UU;
     587  for(i=1; i<=size(V);i++)
     588  {
     589    R[i]=list();
     590    S[i]=list();
     591    I=0;
     592    for(j=1;j<=size(V[i]); j++)
     593    {
     594      LL=Multiply(V[i][j],G);
     595      LL.t=reduce(t*LL.t,I);
     596      //I only reduce the tail
     597      LL.t=subst(LL.t,t,1);
     598      S[i]=insert(S[i],LL,size(S[i]));
     599      LL.h=t*LL.h;
     600      R[i]=insert(R[i],LL,size(R[i]));
     601      UU=R[i][j];
     602      I=I+ideal(UU.h+UU.t);
     603      attrib(I,"isSB",1);
     604    }
     605  }
     606  list M=list();
     607  poly q;
     608  poly s;
     609  for(i=1; i<=size(S); i++)
     610  {
     611    N=list();
     612    for(j=1; j<=size(S[i]); j++)
     613    {
     614      p=S[i][j];
     615      q=p.h;
     616      s=p.t;
     617      N[j]=list(q,s);
     618    }
     619    M[i]=N;
     620  }
     621  p.h=poly(0);
     622  p.t=poly(0);
     623  setring r;
     624  def MM=imap(H,M);
     625  list MMM=list();
     626  for(i=1; i<=size(MM); i++)
     627  {
     628    N=list();
     629    for(j=1; j<=size(MM[i]); j++)
     630    {
     631      p.h=MM[i][j][1];
     632      p.t=MM[i][j][2];
     633      N[j]=p;
     634    }
     635    MMM[i]=N;
     636  }
     637  return(MMM);
     638}
     639example
     640{ "EXAMPLE:"; echo = 2;
     641 ring r=0, (x,y,z), rp;
     642 jmp r1;
     643 r1.h=z^3;
     644 r1.t=poly(0);
     645 jmp r2;
     646 r2.h=z^2*y;
     647 r2.t=poly(0);
     648 jmp r3;
     649 r3.h=z*y^2 ;
     650 r3.t=-x^2*y;
     651 jmp r4;
     652 r4.h=y^5;
     653 r4.t=poly(0);
     654 list G2F=list(list(r1,r2,r3),list(r4));
    662655 FinalVm(VConst(G2F,6,r) , G2F, r);
    663656}
     
    671664list V=list();
    672665V= VConst(G,c);
    673 //print("VConst");
    674666//V non ordered
    675667list L=list();
     
    719711//L will contain results
    720712poly h=Minimus(variables(A.h));
    721 //print(h);
    722713int l=findvars(h,1)[2][1];
    723714if(l!=nvars(basering))
    724715 {
    725 //print("vero");
    726 //print(l);
    727716  for(int j=l+1;j<=nvars(basering); j++)
    728717   {
    729     //print("entrata");
    730     //print(var(j));
    731718    E=var(j)*A.h/B.h;
    732719//Candidate for * product
    733     //print(E);
    734720    if(E!=0)
    735721      {
     
    789775//Loop on polynomials
    790776                        C=EKCouples(G[i][j], G[k][l]);
    791 //print("coppia");
    792777                        if(C[2]!=0)
    793778                          {
     
    865850True=1/False=0
    866851EXAMPLE:  example TestJMark; shows an example"
    867 {int flag=1;
    868 if(size(G1)==1 && size(G1[1])==1)
    869  {
    870   //Hypersurface
    871   print("Only One Polynomial");
    872   flag=1;
    873  }
    874 else
    875   {
    876    int d=0;
    877    list EK,D=EKPolys(G1);
    878 //print("PolysEK");
    879    //I found EK couples
    880    int massimo=Max(D);
    881    list V1=ConstructorMain(G1,massimo,r);
    882 //print("Costruttore");
    883 //print(V1);
    884    jmp mi=V1[1][1];
    885    int minimo=Min(deg(mi.h));
    886    intvec u=NewWeight(nvars(r)+1);
    887 list L=ringlist(r);
    888 L[2]=insert(L[2],"t",size(L[2]));
    889 //print(L[2]);
    890 list ordlist="a",u;
    891 L[3]=insert(L[3],ordlist,0);
    892 def H=ring(L);
    893 list JJ=list();
    894 jmp pp;
    895 jmp qq;
    896 int i;
    897 int j;
    898 list NN;
    899 for(i=size(V1);i>0;i--)
    900     {
    901      NN=list();
    902      for(j=size(V1[i]);j>0;j--)
    903          {
    904           //print(j);
    905           pp=V1[i][j];
    906           NN[j]=list(pp.h,pp.t);
    907           }
    908 //print(NN);
    909 JJ[i]=NN;
    910 //print(JJ[i]);
    911 //print(i);
    912     }
    913 //print(JJ);
    914 list KK=list();
    915 list UU=list();
    916 //jmp qq;
    917 for(i=size(G1);i>0;i--)
    918     {
    919      for(j=size(G1[i]);j>0;j--)
    920          {
    921           //print(j);
    922           qq=G1[i][j];
    923           UU[j]=list(qq.h,qq.t);
    924           }
    925 //print(UU);
    926 KK[i]=UU;
    927     }
    928 setring H;
    929 //I defined the new ring with the weighted
    930 //variable t
    931 poly p;
    932 //print("anello definito");
    933 def JJJ=imap(r,JJ);
    934 def EK=imap(r,EK);
    935 //print(flag);
    936 //imap(r,D);
    937 list V=list();
    938 jmp fp;
    939 //int i;
    940 //int j;
    941 list N;
    942 for(i=size(JJJ); i>0; i--)
    943    {
    944            N=list();
    945            for(j=size(JJJ[i]); j>0; j--)
    946               {
    947                 fp.h=JJJ[i][j][1];
    948                 fp.t=JJJ[i][j][2];
    949                 N[j]=fp;
    950                }
    951            V[i]=N;
    952             }
    953 //print(V);
    954 def KKJ=imap(r,KK);
    955 list G=list();
    956 list U=list();
    957 for(i=1; i<=size(KKJ); i++)
    958    {
    959            for(j=1; j<=size(KKJ[i]); j++)
    960               {
    961                 fp.h=KKJ[i][j][1];
    962                 fp.t=KKJ[i][j][2];
    963                 U[j]=fp;
    964                }
    965            G[i]=U;
    966     }
    967 // print(V);
    968 //print(G);
    969 //I imported in H everithing I need
    970 poly q;
    971 ideal I;
    972    for(j=1; j<=size(EK);j++)
     852{
     853  int flag=1;
     854  if(size(G1)==1 && size(G1[1])==1)
     855  {
     856    //Hypersurface
     857    print("Only One Polynomial");
     858    flag=1;
     859  }
     860  else
     861  {
     862    int d=0;
     863    list EK,D=EKPolys(G1);
     864    //I found EK couples
     865    int massimo=Max(D);
     866    list V1=ConstructorMain(G1,massimo,r);
     867    jmp mi=V1[1][1];
     868    int minimo=Min(deg(mi.h));
     869    intvec u=NewWeight(nvars(r)+1);
     870    list L=ringlist(r);
     871    L[2]=insert(L[2],"t",size(L[2]));
     872    list ordlist="a",u;
     873    L[3]=insert(L[3],ordlist,0);
     874    def H=ring(L);
     875    list JJ=list();
     876    jmp pp;
     877    jmp qq;
     878    int i;
     879    int j;
     880    list NN;
     881    for(i=size(V1);i>0;i--)
     882    {
     883      NN=list();
     884      for(j=size(V1[i]);j>0;j--)
    973885      {
    974        d=D[j];
    975        p=EKPolynomials(EK[j],G);
    976        //print("arrivo");
    977        I=IdealOfV(V[d-minimo+1]);
    978 attrib(I,"isSB",1);
    979 //print(I);
    980 q=reduce(t*p,I);
    981 //print(I[1]);
    982 //print(t*p);
    983 q=subst(q,t,1);
    984 //I reduce all the EK polynomials
    985 //       q=RiduzPoly(V[d-minimo+1], p);
    986        if(q!=0)
    987          {
    988 //check whether reduction is 0
    989           print("NOT A BASIS");
    990          flag=0;
    991           break;
    992          }
    993      }
    994   }
    995 //print(flag);
    996 setring r;
    997 //typeof(flag);
    998 return(flag);
    999 }
    1000 example
    1001 { "EXAMPLE:"; echo = 2;
    1002  ring r=0, (x,y,z), rp;
    1003 jmp r1;
    1004 r1.h=z^3;
    1005 r1.t=poly(0);
    1006 jmp r2;
    1007 r2.h=z^2*y;
    1008 r2.t=poly(0);
    1009 jmp r3;
    1010 r3.h=z*y^2 ;
    1011 r3.t=-x^2*y;
    1012 jmp r4;
    1013 r4.h=y^5;
    1014 r4.t=poly(0);
    1015 list G2F=list(list(r1,r2,r3),list(r4));
    1016 TestJMark(G2F,r);
    1017 }
     886        pp=V1[i][j];
     887        NN[j]=list(pp.h,pp.t);
     888      }
     889      JJ[i]=NN;
     890    }
     891    list KK=list();
     892    list UU=list();
     893    //jmp qq;
     894    for(i=size(G1);i>0;i--)
     895    {
     896      for(j=size(G1[i]);j>0;j--)
     897      {
     898        qq=G1[i][j];
     899        UU[j]=list(qq.h,qq.t);
     900      }
     901      KK[i]=UU;
     902    }
     903    setring H;
     904    //I defined the new ring with the weighted
     905    //variable t
     906    poly p;
     907    //print("anello definito");
     908    def JJJ=imap(r,JJ);
     909    def EK=imap(r,EK);
     910    list V=list();
     911    jmp fp;
     912    //int i;
     913    //int j;
     914    list N;
     915    for(i=size(JJJ); i>0; i--)
     916    {
     917      N=list();
     918      for(j=size(JJJ[i]); j>0; j--)
     919      {
     920        fp.h=JJJ[i][j][1];
     921        fp.t=JJJ[i][j][2];
     922        N[j]=fp;
     923      }
     924      V[i]=N;
     925    }
     926    def KKJ=imap(r,KK);
     927    list G=list();
     928    list U=list();
     929    for(i=1; i<=size(KKJ); i++)
     930    {
     931      for(j=1; j<=size(KKJ[i]); j++)
     932      {
     933        fp.h=KKJ[i][j][1];
     934        fp.t=KKJ[i][j][2];
     935        U[j]=fp;
     936      }
     937      G[i]=U;
     938    }
     939    //I imported in H everithing I need
     940    poly q;
     941    ideal I;
     942    for(j=1; j<=size(EK);j++)
     943    {
     944      d=D[j];
     945      p=EKPolynomials(EK[j],G);
     946      I=IdealOfV(V[d-minimo+1]);
     947      attrib(I,"isSB",1);
     948      q=reduce(t*p,I);
     949      q=subst(q,t,1);
     950      //I reduce all the EK polynomials
     951      //       q=RiduzPoly(V[d-minimo+1], p);
     952      if(q!=0)
     953      {
     954        //check whether reduction is 0
     955        print("NOT A BASIS");
     956        flag=0;
     957        break;
     958      }
     959    }
     960  }
     961  setring r;
     962  //typeof(flag);
     963  return(flag);
     964}
     965example
     966{ "EXAMPLE:"; echo = 2;
     967 ring r=0, (x,y,z), rp;
     968 jmp r1;
     969 r1.h=z^3;
     970 r1.t=poly(0);
     971 jmp r2;
     972 r2.h=z^2*y;
     973 r2.t=poly(0);
     974 jmp r3;
     975 r3.h=z*y^2 ;
     976 r3.t=-x^2*y;
     977 jmp r4;
     978 r4.h=y^5;
     979 r4.t=poly(0);
     980 list G2F=list(list(r1,r2,r3),list(r4));
     981 TestJMark(G2F,r);
     982}
Note: See TracChangeset for help on using the changeset viewer.