Singular
https://www.singular.uni-kl.de/forum/

How to work with Letterplace/freegb?
https://www.singular.uni-kl.de/forum/viewtopic.php?f=10&t=1864
Page 1 of 1

Author:  SimonKing [ Sat Oct 02, 2010 1:00 am ]
Post subject:  How to work with Letterplace/freegb?

I am trying to understand what one can do with freeGBasis. I thought that having the two-sided Groebner basis up to degree d of an ideal in a free associative algebra, one should be able to compute normal forms for elements of degree up to d. But how? This does not seem to be explained in the manual.

Can one use some form of the NF command? Or how can this be done?

Another question on Letterplace. Letterplace seems to provide three ways of representing elements of an associative algebra:

1. Something like b(1)*b(2)+c(1) in the ring that is returned by makeLetterplaceRing.

2. A representation by lists of modules, like
Code:
[1]:
   _[1]=b*gen(3)+b*gen(2)+gen(1)
   _[2]=c*gen(2)+gen(1)


3. A string representation, likee b*b+c.

One can come from the first to the second representation via lp2lstr and from the second to the third via lst2str.

But is there a function that transforms the second representation into the first?

Best regards,
Simon

Author:  SimonKing [ Sat Oct 02, 2010 1:08 pm ]
Post subject:  Re: How to work with Letterplace/freegb?

I'd like to add two more questions. Both concern the documentation of 'freeGBasis':

1. It is stated that the return value is a ring. Is that really true? The example suggests that it is a list.

2. The example ends with
Code:
def U = freeGBasis(L,5); // 5 is the degree bound
lst2str(U);
==> [1]:
==>    yyyyy
==> [2]:
==>    22803yyyx+19307yyyy
==> [3]:
==>    1933yyxy+2751yyyx+161yyyy
==> [4]:
==>    22xyy-3yxy-21yyx+7yyy
==> [5]:
==>    3xyx-22xyy+21yyx-7yyy
==> [6]:
==>    3xx-xy-7yy

So, apparently the Gröbner basis is not reduced. I think this should be mentioned in the documentation. Would "interred" work here (probably not)? Is there another way to get a reduced basis?

And of course, as I previously said, it would be nice to show a Gröbner basis "in action", i.e., computing normal forms etc.

Author:  levandov [ Tue Nov 16, 2010 6:05 pm ]
Post subject:  Re: How to work with Letterplace/freegb?

Hi Simon,

sorry, I haven't seen your inquiry before :-(

SimonKing wrote:
I am trying to understand what one can do with freeGBasis. I thought that having the two-sided Groebner basis up to degree d of an ideal in a free associative algebra, one should be able to compute normal forms for elements of degree up to d. But how? This does not seem to be explained in the manual.
Can one use some form of the NF command? Or how can this be done?


No, at the moment (3-1-2 release) there's no normal form command. Of course it is implemented internally, but we are still working on make it accessible from the interface level. If you (or any other person) desperately need normal form, please contact me directly, there is a temporary solution.

SimonKing wrote:
Another question on Letterplace. Letterplace seems to provide three ways of representing elements of an associative algebra:

1. Something like b(1)*b(2)+c(1) in the ring that is returned by makeLetterplaceRing.


Right, and this one is natively supported in the kernel. All others will just
be transformed to this one.

SimonKing wrote:
2. A representation by lists of modules, like
Code:
[1]:
   _[1]=b*gen(3)+b*gen(2)+gen(1)
   _[2]=c*gen(2)+gen(1)



This one has been cooked to provide people with fast access to Letterplace abilities. Indeed, the idea is as follows: you write your monomial in a free monoid <b,c> (taking over your example), the coefficient by the monomial goes to the first position, so
Code:
module M = [1,b,b],[-4,c];

produces the presentation of a polynomial b^2 - 4*c in K<b,c> (here I changed the coefficient by the second polynomial to -4 to illustrate the difference). Correspondingly, the list of polynomials gots repsesented (as a data type list) by a list of modules, where a module describes one polynomial in K<b,c>.

SimonKing wrote:
3. A string representation, likee b*b+c.


This one should be done in a better environment than Singular library interface,
although (see below) we do have a converter.

SimonKing wrote:
One can come from the first to the second representation via lp2lstr and from the second to the third via lst2str.

But is there a function that transforms the second representation into the first?


yes. There is a static procedure called str2lplace ("string (i.e. monomial times coefficient in free algebra) to letterplace") in the library "freegb.lib" which can do this. Open the library with your library and remove the prefix "static" before the procedure's header. The function has example, demonstrating how it works.

However, this procedure needs testing and might be confused in some situations. I'd like to have feedback on the performance.

With best regards,
Viktor

Author:  levandov [ Tue Nov 16, 2010 6:16 pm ]
Post subject:  Re: How to work with Letterplace/freegb?

SimonKing wrote:
I'd like to add two more questions. Both concern the documentation of 'freeGBasis':

1. It is stated that the return value is a ring. Is that really true? The example suggests that it is a list.


You are right, the answer is a list. Thanks for the hint, the documentation will be corrected soon.

SimonKing wrote:
2. The example ends with
Code:
def U = freeGBasis(L,5); // 5 is the degree bound
lst2str(U);
==> [1]:
==>    yyyyy
==> [2]:
==>    22803yyyx+19307yyyy
==> [3]:
==>    1933yyxy+2751yyyx+161yyyy
==> [4]:
==>    22xyy-3yxy-21yyx+7yyy
==> [5]:
==>    3xyx-22xyy+21yyx-7yyy
==> [6]:
==>    3xx-xy-7yy

So, apparently the Gröbner basis is not reduced. I think this should be mentioned in the documentation. Would "interred" work here (probably not)? Is there another way to get a reduced basis?


By activating usual options
Code:
option(redSB); option(redTail);

you will get reduced output, as in the example:
Code:
lst2str(U);
[1]:
   yyyyy
[2]:
   22803yyyx+19307yyyy
[3]:
   7601yyxy-8526yyyy
[4]:
   22xyy-3yxy-21yyx+7yyy
[5]:
   xyx-yxy
[6]:
   3xx-xy-7yy


Letterplace is developed in accordance with usual Singular practices. If you find any difference to usual Singular's practice, please let us know.

SimonKing wrote:
And of course, as I previously said, it would be nice to show a Gröbner basis "in action", i.e., computing normal forms etc.


Yes, and this is doable right now. We hope to provide the corresponding function in the release until Christmas Eve 2009.

With best regards,
Viktor and Letterplace Team

Page 1 of 1 All times are UTC + 1 hour [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/