<!ELEMENT Mathpaper (def+, lemtripro*, theopro, coro*)> <!ELEMENT lemtripro (lemma, proof?)> <!ELEMENT theopro (theorem, proof)> <!ELEMENT e (#PCDATA)>(All otherwise undefined subelements e = def, ... are understood to have e's declaration.)
Someone proposes this Mathpaper markup as an element of the above DTD:
<Mathpaper> <def><theorem>1st definition</def> <def>2nd definition</def> <theopro> <theorem>the theorem</theorem> <proof>the theorem's proof</proof> </theopro> <coro> <stat>1st corollary's statement</stat> <proof>1st corollary's proof</proof> </coro> <coro></coro> </Mathpaper>Also, this content markup is given within some MathML document:
<apply> <eq/> <apply> <times/> <ci>x</ci> <ci>y</ci> </apply> <apply> <times/> <ci>y</ci> <ci>x</ci> </apply> </apply>
a) Is the Mathpaper markup well-formed XML? If yes, briefly enumerate the reasons why. If no, indicate the erroneous place(s) and the easiest correction(s).
b) Is the Mathpaper markup valid w.r.t. the above Mathpaper DTD? If yes, briefly enumerate the reasons why. If no, indicate the erroneous place(s) and the easiest correction(s).
c) Draw the MathML markup as a tree.
d) Give a Prolog term equivalent to the MathML markup.
e) Ignoring DTD issues, give a revised theopro subelement - possibly made well-formed - for the Mathpaper markup with appropriate subsubelements changed as follows: (i) Replace "the theorem" by the MathML markup, shortened to <apply> <eq/> . . . </apply>. (ii) Use "easy" as the 'proof'.
f) Now adapt the DTD by changing, for e = theorem, <!ELEMENT e (#PCDATA)> into a declaration specifying one apply subelement within theorem elements, relying on the MathML DTD for apply's declaration and further nested ones.