Project

General

Profile

Feature #78

Elim ordering and matrix ordering in CoCoA-5

Added by Anna Maria Bigatti over 12 years ago. Updated 29 days ago.

Status:
In Progress
Priority:
High
Category:
CoCoA-4 function to be added
Target version:
Start date:
16 Jan 2012
Due date:
% Done:

50%

Estimated time:
6.00 h
Spent time:

Description

in cocoa-4 we had an easy way to use an elimination ordering:

  MyRing ::= QQ[x[1..N], t], Elim(t);

and to define a matrix ordering
  MyRing ::= QQ[x[1..N], t], Ord(M);

This is not currently allowed in CoCoA-5 because we are still working on the ring interface and we fear there could be ambiguities allowing "(" in a ring definition. (one should use NewPolyRing instead)

Even though it is quite clear how to make an elimination ordering (matrix), the construction seems quite tedious and verbose.

This "issue" is to make a decision about allowing "Elim(..)" in a ring definition or to propose "the right way" to construct an elimination matrix.


Related issues

Related to CoCoA-5 - Support #242: CoCoA-5 Projects for students (e.g. crediti F and tesi)In Progress2012-09-28

Related to CoCoA-5 - Feature #309: (Multi)BlockMatrixClosed2013-02-13

Related to CoCoALib - Feature #310: ordering and grading (weights) matrixClosed2013-02-13

Related to CoCoALib - Design #311: XelMat, StdDegRevLexMat, ... should be MatrixViewClosed2013-02-14

Related to CoCoALib - Feature #313: Elim(vector<long>) as PPOrderingCtorIn Progress2013-02-15

Related to CoCoALib - Feature #1808: New constructor for PolyRing with elimination orderingIn Progress2024-03-28

History

#1 Updated by Anna Maria Bigatti over 12 years ago

  • Subject changed from Elim ordering to Elim ordering and matrix ordering
  • % Done changed from 0 to 10

#2 Updated by Anna Maria Bigatti over 11 years ago

CompleteToOrd gives a non-term-ordering if there are 0's in the given row.
I think it's easy to fix (in cocoalib). I'll do it.
[done: 23-nov-2012]

#3 Updated by Anna Maria Bigatti about 11 years ago

added HomogElimMat and ElimMat, and documented.

Remark: JAA says that in the "::=" ring contructor we should have no problems having "(" after the comma, so we could make a syntax similar to cocoa-4
, Elim(..);, but with indices instead of indets.

#4 Updated by John Abbott over 10 years ago

  • Status changed from New to In Progress
  • Priority changed from Normal to High

In issue #313 I have posted an impl of ElimOrdMat which creates a matrix for elimination orderings. This fn lets one create elim order matrices easily -- JAA could simply put this in some C5 package!

It would be handy to have the , Ord(...) syntax working; the current solution for creating poly rings with orders defined by matrices is unpleasantly cumbersome. Any chance of having this working before next term?

#5 Updated by John Abbott about 10 years ago

  • % Done changed from 10 to 50

Just an idea... it might be nice if the matrix created contained only non-negative entries (e.g. it is easy to have a non-neg matrix for degrevlex).

If I recall well, CoCoALib always arranges for the internal matrix to be non-negative.

What do you think?

#6 Updated by Anna Maria Bigatti about 10 years ago

  • Target version set to CoCoA-5.1.0 Easter14

#7 Updated by Anna Maria Bigatti about 10 years ago

  • Target version changed from CoCoA-5.1.0 Easter14 to CoCoA-5.1.1 Seoul14

#8 Updated by John Abbott over 9 years ago

  • Target version changed from CoCoA-5.1.1 Seoul14 to CoCoA-5.1.2 summer 2015

#9 Updated by Anna Maria Bigatti almost 9 years ago

  • Assignee set to Anna Maria Bigatti
  • Estimated time set to 6.00 h

One problem is how to make it easy to use an elimination ordering.
Currently one has to write:

OrdM := ElimMat(3, [1]);  -- elim the first out of 3 indets
X := <list of names/symbols>;
P := NewPolyRing(QQ, AllIndetNames, OrdM, 0);
Use P;

How to make this easier? Here is a possible shortcut:
P := NewPolyRingElim(QQ, ElimIndetNames, OtherIndetNames);
Use P;

this has the advantage that it can be similarly implemented in CoCoALib.
Another shortcut is this (but I'm not 100% sure it can be done):
Ord := record[M := ..., GrDim := ..];
Use P ::= QQ[<indets>], Ord;

#10 Updated by Anna Maria Bigatti almost 9 years ago

  • Target version changed from CoCoA-5.1.2 summer 2015 to CoCoA-5.1.3/4 Jan 2016

#11 Updated by Anna Maria Bigatti almost 9 years ago

Probably we can implement this:

         M:=Mat([[0,0,0,1,1,1,1]]);
         Ord:= record[M := CompleteOrd(M), GradDim := 0];
         P::=QQ[x,y,z, a[1..3], t]],Ord;

investigate

#12 Updated by Anna Maria Bigatti about 8 years ago

  • Target version changed from CoCoA-5.1.3/4 Jan 2016 to CoCoA-5.?.?

#13 Updated by Anna Maria Bigatti over 6 years ago

  • Target version changed from CoCoA-5.?.? to CoCoA-5.2.4

#14 Updated by John Abbott over 5 years ago

  • Target version changed from CoCoA-5.2.4 to CoCoA-5.3.0

#15 Updated by John Abbott about 4 years ago

  • Target version changed from CoCoA-5.3.0 to CoCoA-5.4.0

I think we are quite far from completing this issue. Postponing...

#16 Updated by John Abbott about 2 years ago

  • Target version changed from CoCoA-5.4.0 to CoCoA-5.4.2

#17 Updated by John Abbott about 1 month ago

I like Anna's possible shortcut from comment 9.
Shall we impl it?

NOTE also for CoCoALib?

#18 Updated by Anna Maria Bigatti 29 days ago

Anna Maria Bigatti wrote:

How to make this easier? Here is a possible shortcut:
P := NewPolyRingElim(QQ, ElimIndetNames, OtherIndetNames);

I like the idea, but not quite this syntax (ambiguity in which are which).
Right now I'd prefer this:
NewPolyRingElim(QQ, IndetsNames, ElimIndices); es: NewPolyRingElim(QQ, "x,y,z,t", 3..4);

#19 Updated by Anna Maria Bigatti 29 days ago

  • Subject changed from Elim ordering and matrix ordering to Elim ordering and matrix ordering in CoCoA-5

#20 Updated by Anna Maria Bigatti 29 days ago

  • Related to Feature #1808: New constructor for PolyRing with elimination ordering added

Also available in: Atom PDF