<?xml version="1.0"?>
<!-- $Id: weylalgebra1.tfb,v 1.10 2003/11/28 06:08:16 taka Exp $ -->

<CD>
<CDName> weylalgebra1 </CDName>
<CDURL> http://www.math.kobe-u.ac.jp/OCD/weylalgebra1.tfb </CDURL>
<CDReviewDate> 2003-08-07 </CDReviewDate>
<CDStatus> experimental </CDStatus>
<CDDate> 2002-08-07, 2003-11-28 revised to 1.1 </CDDate>
<CDVersion> 1 </CDVersion>
<CDRevision> 1 </CDRevision>
<CDUses>
 <!-- private cd's -->
  <CDName>freealg1</CDName>
 <!-- official cd's  -->
  <CDName>arith1</CDName>
  <CDName>list1</CDName>
  <CDName>relation1</CDName>
</CDUses>

<Description> 
This CD defines elements of the ring of differential operators
with coefficients in the polynomial ring.
</Description>


<CDDefinition>
<Name> diffop </Name>
<Description>
  constructor of a differential operator from a polynomial or
  from an element of the finitely generated free algebra.
  The inverse of gr.
</Description>
<CMP>
  d/dq  q = q d/dq + 1
</CMP>
<FMP>
<tfb>
     weylalgebra1.diffop( dq ~freealg1.times~ q ,
              list1.list(list1.list(q),list1.list(dq)))
  ~relation1.eq~
     weylalgebra1.diffop( (q ~arith1.times~ dq) ~arith1.plus~ 1,
              list1.list(list1.list(q),list1.list(dq)));
</tfb>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> gr </Name>
<Description>
  the symbol polynomial of a given differential operator.
  The inverse of diffop.
</Description>
<CMP>
 $\gr( q \partial_{q} + 1) = q p + 1 $
</CMP>
<FMP>
<tfb>
  weylalgebra1.gr( weylalgebra1.diffop( q ~arith1.times~ dq ~arith1.plus~ 1 ,
              list1.list(list1.list(q),list1.list(dq))),
      list1.list(list1.list(dq),list1.list(p))) 
 ~relation1.eq~ 
  (q ~arith1.times~ p ~arith1.plus~ 1);
</tfb>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> diff </Name>
<Description>
  Differentiation of a given function in one variable.
</Description>
<Example>
  $\frac{d x^2}{dx} = 2 x$
<tfb>
  weylalgebra1.diff( x ~arith1.power~ 2 , x)
  ~relation1.eq~ 
  ( 2 ~arith1.times~ x );
</tfb>
</Example>
</CDDefinition>

<CDDefinition>
<Name> partialdiff </Name>
<!-- We do not use partialdiff in calculus1 by lambda. -->
<Description>
  partial differentiation of a given function.
</Description>
<CMP>
  $\frac{\partial^{2} x^{2} y}{\partial x^{2}} = 2 y $
</CMP>
<FMP>
<tfb>
  weylalgebra1.partialdiff( x ~arith1.times~ x  ~arith1.times~ y,
          list1.list(list1.list(x,2)))
 ~relation1.eq~ 
  ( 2 ~arith1.times~ y );
</tfb>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> times </Name>
<Description>
  multiplication in D
</Description>
<CMP>
 $\partial_{q} q = \partial{q} q + 1 $
</CMP>
<FMP>
<tfb>
  dq ~weylalgebra1.times~ q
 ~relation1.eq~ 
  (q ~weylalgebra1.times~ dq ~arith1.plus~ 1);
</tfb>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> act </Name>
<Description>
  action of a differential operator to a function.
</Description>
<CMP>
  $  x^{m} \partial_{x}^{n} \partial_{y}^{r} \cdot f 
   = x^{m} \frac{partial^{n+r} f}{\partial x^{n} \partial y^{r}}
  $
</CMP>
<FMP>
<tfb>
 weylalgebra1.act(
   weylalgebra1.diffop( (x ~arith1.power~ m) ~arith1.times~
           (dx ~arith1.power~ n) ~arith1.times~
           (dy ~arith1.power~ r),
         list1.list(list1.list(x,y),list1.list(dx,dy))),
  f) ~relation1.eq~
  ((x ~arith1.power~ m) ~arith1.times~
    weylalgebra1.partialdiff(f, list1.list(list1.list(x,n),list1.list(y,r))));
</tfb>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> act_of_poly </Name>
<Description>
  action of a polynomial as a differential operator to a function.
  act_of_poly is equivalent to  the composition of act and diffop.
</Description>
<CMP>
  $  x^{m} \partial_{x}^{n} \partial_{y}^{r} \cdot f 
   = x^{m} \frac{partial^{n+r} f}{\partial x^{n} \partial y^{r}}
  $
</CMP>
<FMP>
<tfb>
 weylalgebra.act_of_poly(
     (x ~arith1.power~ m) ~arith1.times~
           (dx ~arith1.power~ n) ~arith1.times~
           (dy ~arith1.power~ r),
     list1.list(list1.list(x,y),list1.list(dx,dy)),
  f) ~relation1.eq~
  ((x ~arith1.power~ m) ~arith1.times~
    weylalgebra.partialdiff(f, list1.list(list1.list(x,n),list1.list(y,r))));
</tfb>
</FMP>
</CDDefinition>


</CD>
