Division Algorithm(右からの非可換の除法定理)のプログラム In[1]:= NCRightPolyDiv[poly_,divs_,monoorder_,valueorder_]:= NCRightPolyDiv[poly,divs,monoorder,valueorder]= Module[{LT2,PolyList,ListPoly,Polymono2,sig,PolyDiv2,pp}, If[monoorder==lex, LT2[f_]:= LT2[f]=Module[{s,lt,a},s=Length[f];lt=f[[1]]; Do[If[DeleteCases[lt[[2]]-f[[a]][[2]],0][[1]]<0,lt=f[[a]]],{a, 2, s}];lt]]; If[monoorder==grlex, LT2[f_]:= LT2[f]=Module[{s,lt,t,sum1,sum2,a},s=Length[f];lt=f[[1]]; t=Length[lt[[2]]]; Do[sum1=Sum[lt[[2]][[i]],{i,t}]; sum2=Sum[f[[a]][[2]][[i]],{i,t}]; If[sum10, lt=f[[a]]]]],{a,2,s}];lt]]; If[monoorder=!=lex&&monoorder=!=grlex&&monoorder=!=grevlex, LT2[f_]:= LT2[f]=Module[{s,lt,t,c,j},s=Length[f];lt=f[[1]]; t=Length[monoorder]; Do[c=False;j=1; While[c==False, If[monoorder[[j]].lt[[2]]=!=monoorder[[j]].f[[i]][[2]], c=True;If[ monoorder[[j]].lt[[2]]