MathML Content and Operators

I have searched the MathML list already, but have found nothing related to the following queries using the keywords I've tried - I wonder if these issues have already been discussed, and if not I believe they need attention.

I've recently been working with MathML Content, and have found what I believe to be a number of shortcomings which I would like to see addressed - either that or the spec. hasn't made clear to me how to implement such constructs...

1) Differentials in Equations

MathML Content supports the derivative, using the <diff /> element inside an <apply>. However, it doesn't appear to support differentials like 'dy' and 'dx' on their own. My question is how should these be marked-up? One solution would be, since the differential is essentially a unit of its own (you can't separate the 'd' and 'x' in 'dx'), to mark-up the differential as <ci>&dd;x</ci>. However, this seems inadequate since a differential has implied semantics of its own (it is generally meaningless to divide by or to raise a differential to a power for instance).

A second alternative would be to define a new operator <ci>&dd;</ci> which is used in much the same way as a function. This can be applied document-wide using <declare>. However, this seems inappropriate, since it doesn't appear that <declare> provides a "type" attribute value of "operator" - and a differential certainly isn't a "function".

Perhaps the most elementary example of using differentials is in the evaluation of the total derivative (see Example 1). A second example of differentials is when performing an integration by substitution (change of variable): the differential from one variable is converted to the differential of the second (see Example 2).


2) Differentials in Integrals

>From the work I've been doing with computer algebra manipulation, I can see two ways to treat an integral. The first is as a self-contained unit, provided by the <int /> and <apply> element combo. The second way is to return to the Riemann definition of the integral, whereby we are looking at a function (the integrand) *multiplied by* a small change in a variable like 'x' (which becomes 'dx' in the limit).

The second definition allows us to make sense of integral vector calculus, which otherwise wouldn't seem to work. The example I've supplied (Example 3) is a line integral, giving the work done by a force moving through a vector field. The force function is given as 'F' and the infinitesimally small increment along the path of integration is given as 'ds' (a vector).

In accordance with the definition of work done, the force vector 'F' is dotted (scalar product applied) with 'ds' to give the scalar integral required.

Here, my question is how can MathML Content cope with the notion of multiplying a differential (assuming differentials are actually supported) with an integrand and summing the result by taking the integral?


3) Other Differential Operators

Take for instance the common notation "D = d/dx" which can be applied to a function (or any other expression) by multiplication. This is a common *notational* convention, but I see no reason why its semantics cannot be extended to the realms of computer algebra - an algebraic system could 'know' that when such an operator is multiplied by a function, the result is the derivative of the function w.r.t. 'x'. Allowing such content semantics eases the possibility for software to convert from Presentation to Content ML (a current interest of mine).

Example 4 demonstrates such a use of a couple of "D operators" (one for partial derivatives). Does MathML Content already support the notion of operators (aside from the del/nabla and Laplacian types); if so, how could such a "D operator" currently be defined? If not, does anyone know of any support planned?


4) Other Standard Terms/Operators

For this section, I was explicitly thinking about calculus again - in particular the notion of an infinitesimally small change in a value. Most textbooks give this small change in 'x' as the symbol "delta x" (either a lowercase or uppercase delta). However, I cannot see a way in MathML Content of describing this small change in 'x' as representing a small difference, aside from using <ci>&delta;x</ci> which by default renders in normal (not italic) text when converted to <mi>&delta;x</mi>. Note that it is NOT the presentation I'm concerned with here, it's the possible lack of semantics when the value 'x' is not marked as being a "small change".

I suppose this problem comes back around to the issue of defining new operators - here we want a "small change/increment in" prefix operator (just as with differentials, which require a &dd; prefix operator).

Example 5 illustrates a common textbook rendering for the derivative formed by taking the limit of small changes.



I look forward to a discussion of these issues (or indeed being corrected for being totally mistaken).

Best regards,
Charles Lyons.


*****************************************************
Examples (verified as valid in both Amaya and Mozilla)

I've written these examples in MathML Presentation, in the hope that anyone reading this list will be able to interpret them (either by reading the code or with suitable software).


EXAMPLE 1:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
      "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">

<!-- EXAMPLE 1: The total differential.
     How are 'df', 'dx' and 'dy' coded for in Content MathML? -->

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mo>&dd;</mo><mo>&InvisibleTimes;</mo><mi>f</mi><mo>=</mo>
  <mfrac>
    <mrow><mo>&PartialD;</mo><mi>f</mi></mrow>
    <mrow><mo>&PartialD;</mo><mi>x</mi></mrow>
  </mfrac>
  <mo>&InvisibleTimes;</mo>
  <mo>&dd;</mo><mo>&InvisibleTimes;</mo><mi>x</mi>
  <mo>+</mo>
  <mfrac>
    <mrow><mo>&PartialD;</mo><mi>f</mi></mrow>
    <mrow><mo>&PartialD;</mo><mi>y</mi></mrow>
  </mfrac>
  <mo>&InvisibleTimes;</mo>
  <mo>&dd;</mo><mo>&InvisibleTimes;</mo><mi>y</mi>
</math>

*****************************************************

EXAMPLE 2:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
      "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">

<!-- EXAMPLE 2: Integration by change of variable (conversion factor)
     How are 'dx' and 'd&theta;' coded for in Content MathML? -->

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mo>&dd;</mo><mo>&InvisibleTimes;</mo><mi>&theta;</mi><mo>=</mo>
  <mi>&theta;</mi><mo>'</mo><mo>(</mo><mi>x</mi><mo>)</mo>
  <mo>&InvisibleTimes;</mo>
  <mo>&dd;</mo><mo>&InvisibleTimes;</mo><mi>x</mi>
</math>

*****************************************************

EXAMPLE 3:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
      "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">

<!-- EXAMPLE 3: Work done in a vector field
     How are 'ds' (a vector), 'dx', 'dy' and 'dz' coded for in Content MathML?
     How do we treat the integral of the scalar product of a vector ('F') and the
     vector differential 'ds'? -->

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mi>W</mi><mo>=</mo>

  <mo>&int;</mo>
  <mrow>
  <mi mathvariant="bold">F</mi>
  <mo>&centerdot;</mo>
  <mo>&dd;</mo>
  <mi mathvariant="bold">s</mi>
  </mrow>

  <mo>=</mo>

  <mo>&int;</mo>
  <mrow>
  <mo>(</mo>
  <mtable>
    <mtr>
      <mtd><msub><mi>F</mi><mi>x</mi></msub></mtd>
    </mtr>
    <mtr>
      <mtd><msub><mi>F</mi><mi>y</mi></msub></mtd>
    </mtr>
    <mtr>
      <mtd><msub><mi>F</mi><mi>z</mi></msub></mtd>
    </mtr>
  </mtable>
  <mo>)</mo>
  <mo>&centerdot;</mo>
  <mo>(</mo>
  <mtable>
    <mtr>
      <mtd><mo>&dd;</mo><mi>x</mi></mtd>
    </mtr>
    <mtr>
      <mtd><mo>&dd;</mo><mi>y</mi></mtd>
    </mtr>
    <mtr>
      <mtd><mo>&dd;</mo><mi>z</mi></mtd>
    </mtr>
  </mtable>
  <mo>)</mo>
  </mrow>

  <mo>=</mo>

  <mo>&int;</mo>
  <mrow>
  <msub><mi>F</mi><mi>x</mi></msub>
  <mo>&InvisibleTimes;</mo>
  <mo>&dd;</mo>
  <mi>x</mi>
  </mrow>
  <mo>+</mo>

  <mo>&int;</mo>
  <mrow>
  <msub><mi>F</mi><mi>y</mi></msub>
  <mo>&InvisibleTimes;</mo>
  <mo>&dd;</mo>
  <mi>y</mi>
  </mrow>

  <mo>+</mo>

  <mo>&int;</mo>
  <mrow>
  <msub><mi>F</mi><mi>z</mi></msub>
  <mo>&InvisibleTimes;</mo>
  <mo>&dd;</mo>
  <mi>z</mi>
  </mrow>
</math>

*****************************************************

EXAMPLE 4:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
      "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">

<!-- EXAMPLE 4: Use of Differential Operators (e.g. D)
     How does Content MathML handle operators which aren't already
     specified in core MathML - e.g. "D = d/dx". -->

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mo>D</mo>
  <mo>&equiv;</mo>
  <mfrac>
    <mo>&dd;</mo>
    <mrow><mo>&dd;</mo><mi>x</mi></mrow>
  </mfrac>

  <mo>&Implies;</mo>

  <mrow>
    <mo>(</mo>
    <msup><mo>D</mo><mn>2</mn></msup>
    <mo>+</mo>
    <mn>2</mn><mo>&InvisibleTimes;</mo><mo>D</mo>
    <mo>+</mo>
    <mn>3</mn>
    <mo>)</mo>
    <mo>&InvisibleTimes;</mo>
    <mi>y</mi>
  </mrow>

  <mo>&equiv;</mo>

  <mfrac>
    <mrow><msup><mo>&dd;</mo><mn>2</mn></msup><mo>&InvisibleTimes;</mo><mi>y</mi></mrow>
    <mrow><mo>&dd;</mo><mo>&InvisibleTimes;</mo><msup><mi>x</mi><mn>2</mn></msup></mrow>
  </mfrac>
  <mo>+</mo>
  <mn>2</mn><mo>&InvisibleTimes;</mo>
  <mfrac>
    <mrow><mo>&dd;</mo><mo>&InvisibleTimes;</mo><mi>y</mi></mrow>
    <mrow><mo>&dd;</mo><mo>&InvisibleTimes;</mo><mi>x</mi></mrow>
  </mfrac>
  <mo>+</mo>
  <mn>2</mn><mo>&InvisibleTimes;</mo>
  <mi>y</mi>

  <mtext>; a partial diff. operator might be: </mtext>

  <mo mathvariant="script">D</mo>
  <mo>&equiv;</mo>
  <mrow>
    <mo>(</mo>
    <mfrac>
      <mo>&PartialD;</mo>
      <mrow><mo>&PartialD;</mo><mo>&InvisibleTimes;</mo><mi>x</mi></mrow>
    </mfrac>
    <mo>+</mo>
    <mfrac>
      <mo>&PartialD;</mo>
      <mrow><mo>&PartialD;</mo><mo>&InvisibleTimes;</mo><mi>y</mi></mrow>
    </mfrac>
    <mo>+</mo>
    <mn>2</mn><mo>&InvisibleTimes;</mo>
    <mfrac>
      <mo>&PartialD;</mo>
      <mrow><mo>&PartialD;</mo><mo>&InvisibleTimes;</mo><mi>z</mi></mrow>
    </mfrac>
    <mo>)</mo>
  </mrow>
</math>



*****************************************************

EXAMPLE 5:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN"
      "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">

<!-- EXAMPLE 5: Increments/small changes
     How does Content MathML handle operators which aren't already
     specified in core MathML - like "delta x" meaning an infinitesimally small change in 'x'?
     Small changes tending to zero in a limit are taken as differentials (or derivatives in the case of a fraction),
     while other variables tending to zero require an absolute evaluation of the limit. -->

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <munder>
    <mo>lim</mo>
    <mrow><mo>&delta;</mo><mi>x</mi><mo>&RightArrow;</mo><mn>0</mn></mrow>
  </munder>
  <mo>{</mo>
  <mfrac>
    <mrow><mo>&delta;</mo><mi>y</mi></mrow>
    <mrow><mo>&delta;</mo><mi>x</mi></mrow>
  </mfrac>
  <mo>}</mo>
  <mo>=</mo>
  <mfrac>
    <mrow><mo>&dd;</mo><mi>y</mi></mrow>
    <mrow><mo>&dd;</mo><mi>x</mi></mrow>
  </mfrac>
</math>



_____________________________________________________________
http://www.easypost.com Anti-Virus & Anti-Spam Web Mail thats hotter than hot

Received on Tuesday, 14 June 2005 01:33:18 UTC