| LIB "general.lib";
ring r0 = 0,(x,y,z,t),lp;
ideal i = x3,z3,xyz;
sort(i); //sorts using lex ordering, smaller polys come first
==> [1]:
==> _[1]=z3
==> _[2]=xyz
==> _[3]=x3
==> [2]:
==> 2,3,1
sort(i,3..1);
==> [1]:
==> _[1]=xyz
==> _[2]=z3
==> _[3]=x3
==> [2]:
==> 3,2,1
sort(i,"ls")[1]; //sort w.r.t. negative lex ordering
==> _[1]=x3
==> _[2]=xyz
==> _[3]=z3
intvec v =1,10..5,2..4;v;
==> 1,10,9,8,7,6,5,2,3,4
sort(v)[1]; // sort v lexicographically
==> 1,2,3,4,5,6,7,8,9,10
sort(v,"Dp",1)[1]; // sort v w.r.t (total sum, reverse lex)
==> 1,2,3,4,5,6,7,8,9,10
// Note that in general: lead(sort(M)) != sort(lead(M)), e.g:
module M = [0, 1, 1, 0], [1, 0, 0, 1]; M;
==> M[1]=gen(3)+gen(2)
==> M[2]=gen(4)+gen(1)
sort(lead(M), "c, dp")[1];
==> _[1]=gen(4)
==> _[2]=gen(3)
lead(sort(M, "c, dp")[1]);
==> _[1]=gen(3)
==> _[2]=gen(4)
// In order to sort M wrt a NEW ordering by considering OLD leading
// terms use one of the following equivalent commands:
module( M[ sort(lead(M), "c,dp")[2] ] );
==> _[1]=gen(4)+gen(1)
==> _[2]=gen(3)+gen(2)
sort( M, sort(lead(M), "c,dp")[2] )[1];
==> _[1]=gen(4)+gen(1)
==> _[2]=gen(3)+gen(2)
// BUG: Please, don't use this sort for integer vectors or lists
// with them if there can be negative integers!
// TODO: for some HiWi
sort(3..-3)[1];
==> -3,-2,-1,0,1,2,3
sort(list(-v, v))[1];
==> [1]:
==> -1,-10,-9,-8,-7,-6,-5,-2,-3,-4
==> [2]:
==> 1,10,9,8,7,6,5,2,3,4
|