- From: Andreas Strotmann <strotman@cs.fsu.edu>
- Date: Wed, 12 Jul 2000 19:47:20 -0400 (EDT)
- To: Stan Devitt <jsdevitt@radicalflow.com>
- cc: Gérald QUINTANA <quintana@lyon.objectif.fr>, www-math@w3.org
> The advantage of a tagged data-structure over a lambda construct
> is: that can be recognized as being a piecewise definition.
>
> In particular, this means that it can be quickly recognized as such
> and for display purposes, it means that you can invoke a special
> transformation immmediately instead of having to do sophisticated
> pattern matching on the arguments to lambda to see if you want
> a special notation for display.
Yes, I agree with you here, Stan. With respect to the actual
representation of the "cases" or "pieces", my quick-and-dirty solution
would require some multi-level pattern matching for discovering the proper
rendering, and I would certainly welcome the introduction of
special-purpose MathML content markup for something close to the "cond" or
"if-then-else" or something a little closer to the mathematical notation
/ -1 for x<0
|
sign(x)=< 0 for x=0
|
\ +1 for x>0
Special notation for "otherwise" (and, come to think of it, the concept of
"undefined" that is necessary once you're talking piece-wise defs) could
be added as well.
My main point was that I do not think that a conditional expression like
that should involve a <bvar>, as the notions of "piece-wise" and
"function" are clearly separable and orthogonal, and I'm not aware of a
mathematical notation that mixes them together in a way that is comparable
to the way that, say, notations for integration and differentiation mix
them.
I also wanted to point out that there is available in MathML a way of
expressing quite cleanly the concepts behind piece-wise functions, as a
vindication of MathML as it stands.
Taken together, these two points simply argue that it is a matter of
choice (taste) whether to add the "pieces"/"cases"/"cond" concept to
MathML directly or via an extension mechanism like OpenMath.
Personally, and based on the historical precedence from its ubiquity as
primitive construct in the programming world, I would prefer adding
something like Lisp's "cond" or like "if-then-else" as a MathML primitive.
In this, I very much agree with you, Stan.
-- Andreas
PS: a piece-wise function in this sense would therefore be represented as
lambda(x, choice( case(x<0,-1), case(x=0,0), case(x>0,+1) ))
where the lambda construct says "function" and the choice one says
"pieces". In addition, a declare construct (like lambda already available
for this purpose in MathML) would say "definition". I do not think that
anything would be gained by adding to MathML a construct that mixes
together all three. A lot would be gained by adding one that deals
exclusively with the missing concept.
(Note that it is indeed missing, despite providing a way to emulate it.)
Received on Wednesday, 12 July 2000 19:47:22 UTC