Changeset 7161aca in git for Singular/LIB/JMBTest.lib
- Timestamp:
- Aug 12, 2019, 11:10:44 AM (5 years ago)
- Branches:
- (u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
- Children:
- 8307d2d92aa305b1a9b4e0c9353dfc467f913461
- Parents:
- d4cec6ab781a81162945ff680935242fcccc952ab258e2adb78434353acc85388a6c40c626c4b5ee
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/JMBTest.lib
rd4cec6a r7161aca 107 107 int aJ=deg(f.h); 108 108 // minimal degree of polynomials in G 109 //print(aJ);110 109 list V=list(); 111 110 V[1]=Terns(G,1); … … 227 226 //Compare degrees; 228 227 d=-1; 229 //print("Per Grado");230 228 } 231 229 if(deg(P.h)==deg(Q.h)) … … 237 235 //head=tail 238 236 d=0; 239 //print("Uguali");240 237 } 241 238 } … … 495 492 } 496 493 I=M[1..size(M)]; 497 //print("IdealOfV");498 494 //I=std(I); 499 495 } … … 538 534 EXAMPLE: example NewWeight; shows an example" 539 535 { 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 } 639 example 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)); 662 655 FinalVm(VConst(G2F,6,r) , G2F, r); 663 656 } … … 671 664 list V=list(); 672 665 V= VConst(G,c); 673 //print("VConst");674 666 //V non ordered 675 667 list L=list(); … … 719 711 //L will contain results 720 712 poly h=Minimus(variables(A.h)); 721 //print(h);722 713 int l=findvars(h,1)[2][1]; 723 714 if(l!=nvars(basering)) 724 715 { 725 //print("vero");726 //print(l);727 716 for(int j=l+1;j<=nvars(basering); j++) 728 717 { 729 //print("entrata");730 //print(var(j));731 718 E=var(j)*A.h/B.h; 732 719 //Candidate for * product 733 //print(E);734 720 if(E!=0) 735 721 { … … 789 775 //Loop on polynomials 790 776 C=EKCouples(G[i][j], G[k][l]); 791 //print("coppia");792 777 if(C[2]!=0) 793 778 { … … 865 850 True=1/False=0 866 851 EXAMPLE: 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--) 973 885 { 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 } 965 example 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.