QEtaLinearReduction(C, F, grade, coefficient)ΒΆ

qetalinred.spad line 81 [edit on github]

QEtaLinearReduction

greaterGrade?: (F, F) -> Boolean

greaterGrade?(x, y) returns grade(x)>grade(y).

linearTransform: (List F, Matrix C -> Matrix C) -> List F

linearTransform(bas,trf) returns linearTransform(bas,trf,0).

linearTransform: (List F, Matrix C -> Matrix C, Integer) -> List F

linearTransform(bas,trf,mn) considers the coefficients of the elements (highest grade down to mn) as the rows of a matrix, attaches a unit matrix to the right-hand side and applies trf to that matrix. The recorded transformations steps on this matrix are then performed on bas. By using linearTransform(bas,rowEchelon) one can achieve a rowEcholon reduction of bas.

reduce: (F, List F) -> F

reduce(u, bas) returns an element v such that not(reducible?(u,b)) for any b in bas.

reducible?: (F, F) -> Boolean

reducible?(u, b) returns true iff n=grade(b) and not(zero?(coefficient(u,n))) and there exists f in C such that for v=u-f*b, c=coefficient(u,n), and d=coefficient(v,n) zero? d holds or euclideanSize(c)>euclideanSize(d).

rowEchelon: List F -> List F

rowEchelon(bas) returns linearTransform(bas,rowEchelon$M,0) where M ==> Matrix(C).

tailReduce: (F, List F) -> F

tailReduce(u,bas) returns an element v such that grade(u)=grade(v) and not(reducible?(u,b)) for any b in bas and n<grade(u).

topReduce: (F, List F) -> F

topReduce(u,bas) returns an element v such that not(grade(u)=grade(b) and reducible?(u,b)) for any b in bas.

triangularize: List F -> List F

triangularize(bas) reduces each element of bas by the other elements as long as this is possible. It is assumed that the elements are linearly independent. The implementation will not check for zero elements.