Back to Forum | View unanswered posts | View active topics
Topic review - How to work with Letterplace/freegb? |
Author |
Message |
|
|
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
[quote="SimonKing"]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. [/quote]
You are right, the answer is a list. Thanks for the hint, the documentation will be corrected soon.
[quote="SimonKing"] 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 [/code] 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? [/quote]
By activating usual options [code] option(redSB); option(redTail); [/code] 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 [/code]
Letterplace is developed in accordance with usual Singular practices. If you find any difference to usual Singular's practice, please let us know.
[quote="SimonKing"] 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.[/quote]
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
|
|
|
|
Posted: Tue Nov 16, 2010 6:16 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
Hi Simon,
sorry, I haven't seen your inquiry before :-(
[quote="SimonKing"]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? [/quote]
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.
[quote="SimonKing"] 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. [/quote]
Right, and this one is natively supported in the kernel. All others will just be transformed to this one.
[quote="SimonKing"] 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) [/code] [/quote]
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]; [/code] 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>.
[quote="SimonKing"] 3. A string representation, likee b*b+c. [/quote]
This one should be done in a better environment than Singular library interface, although (see below) we do have a converter.
[quote="SimonKing"] 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? [/quote]
yes. There is a static procedure called [b]str2lplace [/b] ("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
|
|
|
|
Posted: Tue Nov 16, 2010 6:05 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.
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 [/code] 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.
|
|
|
|
Posted: Sat Oct 02, 2010 1:08 pm |
|
|
|
|
|
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
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) [/code]
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
|
|
|
|
Posted: Sat Oct 02, 2010 1:00 am |
|
|
|
|
|
It is currently Fri May 13, 2022 11:08 am
|
|