"Groebner bases with DERIVE 3.01" InputMode:=Word v:=[x,y] v_:=[y_1,y_2,y_3,y_4,y_5,y_6,y_7,y_8,y_9,y_10] [ord:=(lex:=1),grlex:=2,grevlex:=3,invlex:=4] SUBST(f_,v,a):=LIM(f_,v,a) COL_(w,i):=VECTOR(y SUB i,y,w) APPEND_COL_(m,u):=VECTOR(APPEND(m SUB i,[u SUB i]),i,DIMENSION(m)) ADD_ELEMENT(u,v):=INSERT_ELEMENT(u,v,DIMENSION(v)+1) DELETE_LAST(v):=DELETE_ELEMENT(v,DIMENSION(v)) E__(n,i):=(IDENTITY_MATRIX(n)) SUB i ORD_MATRIX(ord,n):=IF(ord=1,IDENTITY_MATRIX(n),IF(ord=2,APPEND(APPEND([VECTOR(~ 1,i,n-1)],IDENTITY_MATRIX(n-1))`,[E__(n,1)]),IF(ord=3,VECTOR(IF(i+jk,0,1),i,n)],IF(k1,APPEND(ORD_MATRIX(3,k-1),ZERO_MATRIX(n-~ k+1,k-1))`,[]))` TERM(f_,i,x):=LIM(DIF(f_,x,i),x,0)/i!*x^i TERM_DEGREE(t,x):=x*DIF(t,x)/t LT_X(f_,x):=(TERMS(EXPAND(x*f_,x))) SUB 1/x LT_X_V(f_,x):=COL_(TERMS(EXPAND(f_*x,x)),1)/x DEGREE(f_,x):=TERM_DEGREE(LT_X(f_,x),x) TERM_MDEG(ltf,v):=VECTOR(TERM_DEGREE(ltf,k),k,v) LOG_V(v):=VECTOR(LOG(y),y,v) EXP_V(v):=VECTOR(EXP(y),y,v) DEF_ORD(v,ord):=[v_y:=VECTOR(v_ SUB i,i,DIMENSION(v)),ord_m:=IF(DIMENSION(ord)~ >0,ord,?,ORD_MATRIX(ord,DIMENSION(v))),ord_minv:=IF(DIMENSION(ord)>0,ord^(-1),~ ?,ORD_MATRIX(ord,DIMENSION(v))^(-1))] LT_LEX_1(f_,v,i):=IF(i>DIMENSION(v),f_,LT_LEX_1(LT_X(f_,v SUB i),v,i+1)) LT_LEX(f_,v):=LT_LEX_1(f_,v,1) LT_LEX_V_1(f_,v,i):=IF(i>DIMENSION(v),f_,LT_LEX_V_1(LT_X_V(f_,v SUB i),v,i+1)) LT_LEX_V(f_,v):=LT_LEX_V_1(f_,v,1) phi(f_,v):=SUBST(f_,v,EXP_V(ord_m . LOG_V(v_y))) čINV(f_,v):=SUBST(f_,v_y,EXP_V(ord_minv . LOG_V(v))) LT_ORD(f_,v):=čINV(LT_LEX(phi(f_,v),v_y),v) LT(f_,v):=IF(ord_=1,LT_LEX(f_,v),LT_ORD(f_,v),LT_ORD(f_,v)) LEADING_TERM_0(f_,v):=LT_ORD(f_,v) LEADING_TERM(f_,v,ord):=IF(ord=1,LT_LEX(f_,v),LEADING_TERM_0(f_,v,DEF_ORD(v,or~ d))) DEF_ORD(v,ord):=[v_y:=VECTOR(ELEMENT(v_,i),i,DIMENSION(v)),ord_m:=IF(DIMENSION~ (ord)>0,ord,?,ORD_MATRIX(ord,DIMENSION(v))),ord_minv:=IF(DIMENSION(ord)>0,ord^~ (-1),?,ORD_MATRIX(ord,DIMENSION(v))^(-1))] MDEG(f_,v):=TERM_MDEG(LT(f_,v),v) MON_LCM_AUX(v,md):=PRODUCT(ELEMENT(v,i)^ELEMENT(md,i),i,DIMENSION(v)) MON_LCM(m1,m2,v):=MON_LCM_AUX(v,DELETE_LAST(MAX(APPEND(([TERM_MDEG(m1,v),TERM_~ MDEG(m2,v)] . ord_minv)`,[[0,0]]))) . ord_m) S_POLY_AUX(f_,g_,v,ltf,ltg):=MON_LCM(ltf,ltg,v)*(f_/ltf-g_/ltg) S_POLY_AUX1(f_,g_,v,ltf,ltg,mdegf,mdegg):=MON_LCM_AUX(v,DELETE_LAST(MAX(APPEND~ (([mdegf,mdegg] . ord_minv)`,[[0,0]]))) . ord_m)*(f_/ltf-g_/ltg) S_POLY(f_,g_,v):=S_POLY_AUX(f_,g_,v,LT(f_,v),LT(g_,v)) NF_4(p,ltp,ff,ltff,v,r,i):=IF(TERM_MDEG(ltp/ltff SUB i,v) . ord_minv>=0,[p-ff ~ SUB i*ltp/ltff SUB i,r],IF(i=g~ _ SUB k SUB 3 . ord_minv,0,COND2_AUX(g_,i,mdegi,mdegj,k+1))) COND2(g_,i,mdegi,mdegj):=COND2_AUX(g_,i,mdegi,mdegj,1) SUCC(ij):=IF(ij SUB 1+1t,[ij,g_,t],B_4(ij,g_,v,t,g_ SUB (ij SUB 1),g_ SUB~ (ij SUB 2))) B_2(ff,v,t):=(ITERATE(B_3(ij,g_,t_,v),[ij,g_,t_],[[1,2],VECTOR(ADD_ELEMENT(TER~ M_MDEG(ff SUB i SUB 2,v),ff SUB i),i,DIMENSION(ff)),t])) SUB 2` SUB 1 B_1(f_,v):=B_2([f_,LT_LEX_V(f_,v)]`,v,DIMENSION(f_)) B_0(f_,v):=čINV(B_1(phi(f_,v),v_y),v) BUCHBERGER(f_,v,ord):=B_0(f_,v,ord_:=ord,DEF_ORD(v,ord)) LC1(ltf,v):=SUBST(ltf,v,VECTOR(1,i,DIMENSION(v))) LC(f_,v):=LC1(LT_LEX(f_,v),v) DIV_MON1(mdeg_v,i,j):=IF(j>DIMENSION(mdeg_v),1,IF((ELEMENT(mdeg_v,j)-ELEMENT(m~ deg_v,i)) . ord_minv<=0,0,IF(j+1/=i,DIV_MON1(mdeg_v,i,j+1),DIV_MON1(mdeg_v,i,j~ +2)))) DIV_MON(mdeg_v,i):=DIV_MON1(mdeg_v,i,IF(i>1,1,2)) R_3(g_,d,i,v):=IF(i>d OR d=1,VECTOR(g_ SUB j SUB 1/LC1(g_ SUB j SUB 2,v),j,d),~ IF(DIV_MON(COL_(g_,3),i),R_3(DELETE_ELEMENT(g_,i),d-1,i,v),R_3(REPLACE_ELEMENT~ ([NF_2(g_ SUB i SUB 1,DELETE_ELEMENT(g_` SUB 1,i),DELETE_ELEMENT(g_` SUB 2,i),~ v,0),g_ SUB i SUB 2,g_ SUB i SUB 3],g_,i),d,i+1,v))) R_2(ff,d,v):=R_3(VECTOR(ADD_ELEMENT(TERM_MDEG(ff SUB i SUB 2,v),ff SUB i),i,d)~ ,d,1,v) R_1(f_,v):=R_2([f_,LT_LEX_V(f_,v)]`,DIMENSION(f_),v) R_0(f_,v):=čINV(R_1(phi(f_,v),v_y),v) REDUCE(f_,v,ord):=R_0(f_,v,ord_:=ord,DEF_ORD(v,ord)) G_0(f_,v):=čINV(R_1(B_1(phi(f_,v),v_y),v_y),v) GROEBNER(f_,v,ord):=G_0(f_,v,ord_:=ord,DEF_ORD(v,ord)) f:=2*x^2*y^3+5*x*y^5-3*x*y-2*y+4 [DEGREE(f,y),LT_X(f,y),LT_LEX(f,[x,y]),MDEG(f,[x,y])] [5,5*x*y^5,2*x^2*y^3,[2,3]] [f:=x^2*y-3*x,g:=x+y^2+1] S_POLY(f,g,[x,y]) -x*(y^3+y+3) [f1:=x^2*y-3*x,f2:=x+y^2+1] NF(-x*(y^3+y+3),[f1,f2],[x,y]) y^5+2*y^3+3*y^2+y+3 [f1:=x^2*y-3*x,f2:=x+y^2+1,f3:=y^5+2*y^3+3*y^2+y+3] BUCHBERGER([f1,f2],[x,y]) [x^2*y-3*x,x+y^2+1,y^5+2*y^3+3*y^2+y+3] NF(S_POLY(f1,f3),[f1,f2,f3]) 0 NF(S_POLY(f2,f3),[f1,f2,f3]) 0 LEADING_TERM(x*y^2-y^4+2*x) x*y^2 BUCHBERGER([x*y^2-y^4+2*x,x^2*y^3-y]) [x*y^2+2*x-y^4,x^2*y^3-y,2*x^2*y-4*x*y-y^7+2*y^5+y,2*x^2-8*x+y^8/2-2*y^6+4*y^4~ -y^2/2,-4*x-y^10/4+y^8/2-y^6+9*y^4/4+y^2/2,-y^11/8+y^5/8+y^3/2+y/2] VECTOR(LEADING_TERM(x*y^2-y^4+2*x,v,ord),ord,1,4) [x*y^2,-y^4,-y^4,-y^4] BUCHBERGER([x*y^2-y^4+2*x,x^2*y^3-y],v,[[5,2],[2,1]]) [x*y^2+2*x-y^4,x^2*y^3-y,2*x^2*y-4*x*y-y^7+2*y^5+y,2*x^3*y+x*y-y^3,2*x^3+x-y^2] REDUCE([x*y^2+2*x-y^4,x^2*y^3-y,2*x^2*y-4*x*y-y^7+2*y^5+y,2*x^2-8*x+y^8/2-2*y^~ 6+4*y^4-y^2/2,-4*x-y^10/4+y^8/2-y^6+9*y^4/4+y^2/2,-y^11/8+y^5/8+y^3/2+y/2],[x,~ y],lex) [x+y^10/16-y^8/8+y^6/4-9*y^4/16-y^2/8,y^11-y^5-4*y^3-4*y] GROEBNER([x*y^2-y^4+2*x,x^2*y^3-y],v,grlex) [-x*y^2-2*x+y^4,x^2*y^3-y,x^3+x/2-y^2/2] GROEBNER([x^2+y^2+z^2+w^2,x^2+2*y^2-y*z-w^2,x+z^3-w^3],[x,y,z,w],grlex) [x^2+y*z+2*z^2+3*w^2,x+z^3-w^3,y^2-y*z-z^2-2*w^2] GROEBNER([x^2+y^2+z^2+w^2,x^2+2*y^2-y*z-w^2,x+z^3-w^3],[x,y,z,w],EL_ORD_MATRIX~ (1,4)) [x+z^3-w^3,y^2-y*z-z^2-2*w^2,y*z+z^6-2*w^3*z^3+2*z^2+w^6+3*w^2] GROEBNER([x*y+z-1,x*z+y-1,y*z+x-1],[x,y,z],lex) [x+y-z^3+z^2+z-2,y^2-y-z*(z-1),y*(z-1)+z^3-z^2-z+1,z^4-2*z^2+z] GROEBNER([x*y+z-1,x*z+y-1,y*z+x-1],[x,y,z],grevlex) [x*y+z-1,x*z+y-1,x+y*z-1,y^2-y-z*(z-1),x^2-x-z*(z-1),-x-y+z^3-z^2-z+2] BUCHBERGER([x*y+z-1,x*z+y-1,y*z+x-1,x+y+z],[x,y,z],grevlex) [x*y+z-1,x*z+y-1,x+y*z-1,x+y+z,-y^2+y+z^2-z,-2*y+z^2-3*z+2,-4*y-2*z,-3*z,6]