-
-
Notifications
You must be signed in to change notification settings - Fork 629
Add an infinite weyl algebra class #40263
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Planarity4
Documentation preview for this PR (built with commit c018c5b; changes) is ready! 🎉 |
from sage.algebras.weyl_algebra import DifferentialWeylAlgebra | ||
from sage.algebras.weyl_algebra import DifferentialWeylAlgebra, InfiniteDifferentialWeylAlgebra |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should not import this into the global namespace, but instead update the hook for DifferentialWeylAlgebra
to punt to the infinite case when the generators are infinite. This will mean renaming DifferentialWeylAlgebra__classcall__
to DifferentialWeylAlgebra__classcall_private__
and expanding its signature to take an addition n
parameter. When n == oo
, then it returns the infinitely generated case.
@cached_method | ||
def one(self): | ||
""" | ||
Return the multiplicative identity element `1` of ``self`` | ||
|
||
EXAMPLES:: | ||
|
||
sage: W.<x> = InfiniteDifferentialWeylAlgebra(QQ) | ||
sage: x[1]*W.one() == x[1] | ||
True | ||
""" | ||
return self.element_class(self, {(self._var_index.one(), self._diff_index.one()): self.base_ring().one()}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cached_method | |
def one(self): | |
""" | |
Return the multiplicative identity element `1` of ``self`` | |
EXAMPLES:: | |
sage: W.<x> = InfiniteDifferentialWeylAlgebra(QQ) | |
sage: x[1]*W.one() == x[1] | |
True | |
""" | |
return self.element_class(self, {(self._var_index.one(), self._diff_index.one()): self.base_ring().one()}) | |
@cached_method | |
def one_basis(self): | |
""" | |
Return the multiplicative identity element `1` of ``self`` | |
EXAMPLES:: | |
sage: W.<x> = InfiniteDifferentialWeylAlgebra(QQ) | |
sage: W.one_basis() == W.one().leading_support() | |
True | |
sage: x[1]*W.one() == x[1] | |
True | |
""" | |
return (self._var_index.one(), self._diff_index.one()) |
This PR adds a class
InfiniteDifferentialWeylAlgebra
, the infinite analog of the currently existingDifferentialWeylAlgebra
class. It is an algebra generated by two countable families of symbols x_i, dx_i subject to the relations [x_i, x_j] = [dx_i, dx_j] = 0 and [x_i, dx_j] = \delta_{i, j}Part of #40241
cc: @tscrim
📝 Checklist
⌛ Dependencies