RE: support for 'macro' formatting languages

Subject: RE: support for 'macro' formatting languages
From: "Frank A. Christoph" <christo@xxxxxxxxxxxxxxxxxx>
Date: Wed, 22 Dec 1999 18:37:48 +0900
I can't resist: my own two yen about MathML and OpenMath.

I certainly think encoding math in a formal language is a good idea, but
SGML and XML are the wrong medium. They have the virtue of being standard
and ubiquitous, but lack even a notion of substitution, which is certainly
the minimum you should require for, at least, equational logic.

If I were going to promulgate a standard language for math I would choose
something firmly founded on mathematical ideas itself, like an untyped
lambda-calculus (say, Scheme) or Standard ML (as in "MetaLanguage", not
"Markup Language") or even HOL or LCF or Isabelle or Coq. The point is not
so much computability as the possibility for compatible abstraction, which
both XML and SGML patently lack. Even a specification language without
executable semantics, many of which exist in the algebraic programming
community, would be better.

I think it's obvious that XML/SGML do not provide even an approximately
comfortable fit to either mathematical notation or ideas, and I'm surprised
I hardly ever hear anyone say it. (Norman Gray is saying it, but apparently
we disagree that encoding mathematics is useful in the first place.) As it
is, I can see MathML and OpenMath only as a crufty 'backend' that one has to
put up with, much as many compiler implementors' regard C as a backend whose
sole virtue is the ubiquity of its implementations.

BTW, here is a motivating example:

Result of conversion to OpenMath

Input was:
\forall a \forall b \forall c (c\times a\to b)\to (c\to b^a)

<OMOBJ>
  <OMA>
    <OMS cd = "arith1" name="times"/>
    <OMA>
      <OMS cd = "arith1" name="times"/>
      <OMA>
        <OMS cd = "arith1" name="times"/>
        <OMA>
          <OMS cd = "arith1" name="times"/>
          <OMA>
            <OMS cd = "arith1" name="times"/>
            <OMA>
              <OMS cd = "arith1" name="times"/>
              <OMA>
                <OMS cd = "arith1" name="times"/>
                <OMA>
                  <OMS cd = "arith1" name="times"/>
                  <OMV name="?"/>
                  <OMV name="a"/>
                </OMA>
                <OMV name="?"/>
              </OMA>
              <OMV name="b"/>
            </OMA>
            <OMV name="?"/>
          </OMA>
          <OMV name="c"/>
        </OMA>
        <OMATTR>
          <OMATP>
            <OMS cd="presentation" name="left"/>
            <OMSTR>(</OMSTR>
            <OMS cd="presentation" name="right"/>
            <OMSTR>)</OMSTR>
          </OMATP>
          <OMA>
            <OMS cd = "arith1" name="times"/>
            <OMA>
              <OMS cd = "arith1" name="times"/>
              <OMA>
                <OMS cd = "arith1" name="times"/>
                <OMV name="c"/>
                <OMV name="a"/>
              </OMA>
              <OMV name="  "/>
            </OMA>
            <OMV name="b"/>
          </OMA>
        </OMATTR>
      </OMA>
      <OMV name="  "/>
    </OMA>
    <OMATTR>
      <OMATP>
        <OMS cd="presentation" name="left"/>
        <OMSTR>(</OMSTR>
        <OMS cd="presentation" name="right"/>
        <OMSTR>)</OMSTR>
      </OMATP>
      <OMA>
        <OMS cd = "arith1" name="times"/>
        <OMA>
          <OMS cd = "arith1" name="times"/>
          <OMV name="c"/>
          <OMV name="  "/>
        </OMA>
        <OMA>
          <OMS cd="arith1" name="power"/>
          <OMV name="b"/>
          <OMV name="a"/>
        </OMA>
      </OMA>
    </OMATTR>
  </OMA>
</OMOBJ>


--FAC


 DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


Current Thread