Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: How to work with Letterplace/freegb?
PostPosted: Sat Oct 02, 2010 1:00 am 

Joined: Fri Oct 01, 2010 11:31 pm
Posts: 10
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


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Re: How to work with Letterplace/freegb?
PostPosted: Sat Oct 02, 2010 1:08 pm 

Joined: Fri Oct 01, 2010 11:31 pm
Posts: 10
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.


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Re: How to work with Letterplace/freegb?
PostPosted: Tue Nov 16, 2010 6:05 pm 

Joined: Thu Aug 11, 2005 8:03 pm
Posts: 40
Location: RWTH Aachen, Germany
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


Report this post
Top
 Profile  
Reply with quote  
 Post subject: Re: How to work with Letterplace/freegb?
PostPosted: Tue Nov 16, 2010 6:16 pm 

Joined: Thu Aug 11, 2005 8:03 pm
Posts: 40
Location: RWTH Aachen, Germany
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


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 posts ] 

You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

It is currently Fri May 13, 2022 11:08 am
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group