Macaulay2 Engine
Loading...
Searching...
No Matches
weylalg.hpp File Reference

WeylAlgebra — ring of polynomial differential operators with [d_i, x_i] = 1. More...

#include "poly.hpp"
#include "gbring.hpp"

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...

Detailed Description

WeylAlgebra — ring of polynomial differential operators with [d_i, x_i] = 1.

Note
AI-generated documentation. Verify against the source before relying on it.

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.

See also
poly.hpp
solvable.hpp

Definition in file weylalg.hpp.