|
Macaulay2 Engine
|
WeylAlgebra — ring of polynomial differential operators with [d_i, x_i] = 1. More...
Go to the source code of this file.
Classes | |
| class | WeylAlgebra |
| PolyRing subclass for Weyl algebras: polynomial rings with the [d_i, x_i] = 1 derivative-variable commutation relations. More... | |
WeylAlgebra — ring of polynomial differential operators with [d_i, x_i] = 1.
Declares the PolyRing subclass for the Weyl algebra: each pair (x_i, d_i) of coordinate and derivative satisfies d_i x_i = x_i d_i + 1, while every other generator commutes normally. The user supplies the assignment via the _derivative / _commutative arrays (_derivative[i] = j means generator i is d_j; _derivative[i] = -1 marks a plain commuting variable), so the multiplication routine can recognise out-of-order d_i x_i products and unfold them via the Leibniz expansion d^a x^b = sum_k C(a, k) C(b, k) k! x^{b - k} d^{a - k}. Two static caches binomtable and diffcoeffstable (sized up to binomtop / diffcoeffstop) memoise the binomial and Leibniz coefficients so the inner loop avoids recomputation.
Setting _homogeneous_weyl_algebra and _homog_var selects the homogenised variant in which d_i shares its degree with x_i (via the extra homogeneity variable absorbing the difference); the result is graded and lets ordinary GB machinery run unchanged on characteristic-variety and D-module intersection problems. The TODO at the top of the header flags a planned migration from raw int * arrays to ExponentVector.
Definition in file weylalg.hpp.