sagemath / sage

Main repository of SageMath. Now open for Issues and Pull Requests.
https://www.sagemath.org
Other
1.19k stars 411 forks source link

g_algebra of FreeAlgebra is commutative #38047

Open tdupu opened 1 month ago

tdupu commented 1 month ago

Steps To Reproduce

R.<x,y,z> = FreeAlgebra(QQ, 3)
P=R.g_algebra(relations={},order='lex')
P.inject_variables() #makes variables x,y,z available to this method
P.is_commutative()
print([x*y-y*x,x*z-z*x,y*z-z*y])

Here is the version. I'm running it on cocalc. 'SageMath version 10.3, Release Date: 2024-03-19'

Expected Behavior

Well, This is suppose to be a noncommutative ring, yet the commutators of the free variables are zero.

Actual Behavior

It's commutative.

Additional Information

It could be that relations={} is imposed incorrectly.

Here is the documentation I was using: https://doc.sagemath.org/pdf/en/reference/noncommutative_polynomial_rings/noncommutative_polynomial_rings.pdf#page83

The g_algebra function isn't well documented so I can't tell. As far as I can tell it has something to do with this package: https://galgebra.readthedocs.io/en/latest/tutorials/algebra.html

It seems poorly named to me.

I didn't open up the source.

This seems to be related to some other issues related to the incompleteness of the FreeAlgebras.

https://github.com/sagemath/sage/issues/26173 https://github.com/sagemath/sage/issues/26911 https://github.com/sagemath/sage/issues/31446

I want to implement this: Green-NoncommutativeGroebnerBasesAndProjectiveResolutions.pdf

I would be happy to work within just FreeAlgebra to implement the Groebner basis algorithm, but there isn't support for monomials in the FreeAlgebra rings it seems. Maybe I am wrong but without passing to the g_algebra it seems you can't pick two monomials and see if one divides another. Note that if m and n are monomials in a noncommutative ring we have m divides n if and only if there exists monomials p and q such that n = pmq.

Environment

- **OS**:Cocalc, May 21, 2024
- **Sage Version**:'SageMath version 10.3, Release Date: 2024-03-19'

Checklist

tdupu commented 1 month ago

So I think I was misunderstanding what a G-algebra is.

https://sheaves.github.io/Noncommutative-Sage/

I suppose they are related to (equal to?) Birkoff-Witt rings where the relations are quadratic. Also see Green. I'm not sure why Sage has both of these.

I think there are essentially two issues:

1) I am complaining about the monomial functionality in FreeAlgebra. This doesn't exist and it prevents anyone from implementing any of the Groebner basis algorithms. (I could also be making a stupid mistake here and not know what to call for this. If that is the case, it isn't documented well.)

2) The function "is_commutative" in this g_algebra thing is still broken even if I don't know what a g_algebra is.

tscrim commented 1 month ago

Yes, there is no way for a $g$-algebra to have two generators be free. It is part of the definition as they are a generalization of the PBW basis of a Lie algebra's universal enveloping algebra.

That being said, yes, the is_commutative() check should be refined. Generically it is true, but this is a special case that is not typically performed. +1 to adding a check that there are no "relations."