Representing derivatives in plain-text content MathML input languages

Hi all,

I have been developing a plain-text input language for the content 
MathML in CellML documents (so that it can be efficiently edited by users).

I am seeking opinions on the best way to represent derivatives 
(including partials) in the input language.

I have discussed this with the CellML team at the meeting today, and 
several options were suggested. I would welcome opinions on which of 
these options is the best, and I would also be keen to hear if you can 
think of another different but better representation in input languages.

All examples refer to the representation of the following content MathML:
<apply><eq/>
  <apply><diff/>
    <bvar><ci>t</ci></bvar>
    <ci>x</ci>
  </apply>
  <ci>y</ci>
</apply>

Option one:
  Representation: diff(x, t) = y.
  Advantages:
   * Succinct.
   * Follows the same syntax as functions in the rest of the language, 
so makes it less complex and easier to understand.
   * Easily generalises to partial differentials by replacing diff with 
partialdiff or pdiff.
  Disadvantages:
   * Non-obvious to new users: does diff mean differential, difference, ...?
   * It is unclear to the user what the ordering of x after t means, 
i.e. which is the bound variable, so you just have to remember that the 
second 'argument' is the bound variable.


Option two:
  Representation: deriv(x, t) = y
  Similar advantages as option one, but also:
  Advantages:
  * Slightly less potential for confusion.
  Disadvantages:
  * Slightly longer.

Option three:
  Representation: differential(x, t) or derivative(x, y)
  Similar advantages as option one, but also:
  Advantages:
  * Clearer meaning.
  Disadvantages:
  * Longer. UIs could simplify input of this by tab-expansion or 
type-ahead features.

Option four:
  Representation: d(x)/d(t)
  Advantages:
  * Similarity to Leibniz notation (arguably more clear meaning)
  * Clear distinction between the bound variable and the expression that 
the differential is being applied to.
  Disadvantages:
  * Syntax is inconsistent with the rest of the grammar.
  * It incorrectly suggests that differentials could be moved around, 
while in reality it is a limited syntax for derivatives.
  * Extending it to partial differentials could look messy and 
confusing, e.g. del(x)/del(t) .

Any opinions are welcome.

Best regards,
Andrew Miller

Received on Sunday, 19 November 2006 23:31:37 UTC