Navigáció: Főoldal / III. rész / III. rész (2. fejezet)
III. rész: Részletes összehasonlítás (folytatás)
2. A tartalmi jelölés
2.1. A tartalmi jelölés elemeiről általában
Ebben a fejezetben részletesen megismerkedünk a MathML tartalmi elemeivel.
Tartsuk szem előtt a következőket:
- A MathML tartalmi elemek “nem hajtják végre” magát a matematikai számítást vagy műveletet, a böngészőben nem fogjuk egy számítás eredményét látni, hiszen a tartalmi elemek csak dokumentálási célokra használhatók.
- A tartalmi elemek ugyan helyesen jelenítik meg a matematikai kifejezéseket, de elsősorban azok tartalmát hivatottak bemutatni. Ha nincs szükségünk a valós tartalomra, akkor inkább használjuk a már megismert megjelenítő elemeket.
Ha egy MathML kifejezést fel kívánunk használni valamilyen más alkalmazásban, akkor célszerű a tartalmi jelölést használni, hiszen ekkor a kiválasztott alkalmazás képes lehet magát a műveletet elvégezni is, így kímélve meg minket sok felesleges munkától.
A tartalmi elemek mindegyike megkaphatja a class, style, id és other attribútumokat. Az első három megegyezik a HTML hasonló attribútumaival és a stíluslapokkal (CSS) kapcsolatos. Az other olyan dolgok leírására alkalmas, melyre nincs külön specifikáció a MathML-ben (például a megjelenítés formájára vonatkozó megjegyzések, stb.). Használatakor vegyük figyelembe, hogy a legtöbb megjelenítő figyelmen kívül hagyja a tartalmát.
A legtöbb (de nem mind!) tartalmi elem megkaphatja a definitionURL attribútumot is, melyben egy olyan URL adható meg, ahol az adott elem (bővebb) szemantikai leírása található meg. Formájára nincs szabály, alapértelmezése sincs.
Ezeknek az attribútumoknak sem az OpenMath-ban, sem a TEX-ben nincs megfelelőjük, mert egyiknél sem használunk a MathML-nek megfelelő stíluslapokat. A TEX-nek van saját stíluslapja, melyet a \documentstyle parancs segítségével használhatunk (Lásd a III/1.2.1. A token-elemek attribútumai című fejezetet). Az OpenMath-nál nincsenek külön stíluslapok, a Content Dictionarykben (CD) adunk meg minden paramétert. Ezekben a CD-kben osztályozhatjuk az elemek paramétereit. Az egyes CD-k tartalmát a C Függelék tartalmazza.
2.2. Tokenelemek
2.2.1. Számok
A <cn> elemet használjuk numerikus állandók specifikálására. Alapértelmezésként bármilyen tízes számrendszerbeli valós érték lehet, leírásakor tízes számrendszerbeli számokat, tizedespontot, előjelet, esetleg előre definiált szimbolikus konstansokat (π) alkalmazhatunk.
Attribútumai a következők lehetnek: type, base. A type segítségével határozhatjuk meg a leírni kívánt szám típusát, értéke “real”, “integer”, “rational”, “complex-cartesian”, “complex-polar”, “constant” lehet. Alapértelmezése a “real”. A base a szám alapszámrendszerét adja meg, 2 és 36 közötti értéket vehet fel, alapértelmezése “10”.
Racionális és komplex számok esetén az egyes számrészek elválasztására a <sep/> elem használandó.
Alapállapotban az így meghatározott számok úgy jelennek meg, mintha azokat az <mn> elemmel írtuk volna le.
TEX-ben ugyanazok érvényesek, amelyeket a megjelenítő elemeknél megismertünk.
OpenMath esetén több lehetőségünk van. Egész számok megadására használjuk az <OMI> elemet, melynél fontos, hogy a pozitív előjelet nem használjuk, valamint az adott számot megadhatjuk 16-os számrendszerben is, de ekkor “x”-szel kell kezdenünk (pl: "x2D4"). Nem egész számok esetén használjuk az <OMF/> elemet. Az elem dec vagy hex paraméterében adhatjuk meg a számot, a számrendszerétől függően. Természetesen előfordulhat, hogy egy, a MathML-ben számként leírt “objektum” az OpenMath-ban máshogy írandó le (legtöbbször valamilyen szimbólumként, az <OMS/> elemmel). Ezen kívül lehetőségünk van egy <OMATTR> elemben megadni a számra vonatkozó típust, ilyenkor a cd=”nums” attribútumot kell beállítani, és megadni a megfelelő számtípust, ami “based_integer”, “complex_cartesian”, “complex_polar”, “e”, “gamma”, “i”, “infinity”, “NaN”, “pi” és “rational” lehet.
Lássunk néhány példát az egyes típusokra (első a MathML, második a TEX, harmadik az OpenMath forma):
<cn type="real"> 12345.7 </cn>
12345.7
<OMF dec=”12345.7”/>
<cn type="integer"> 12345 </cn>
12345
<OMI>12345</OMI>
<cn type="integer" base=16> AB3 </cn>
AB3_16
<OMI>xAB3</OMI>
<cn type="rational> 12342 <sep/> 2342342 </cn>
12342/2342342
<OMF dec=”5,269e-3”/>
<cn type="complex-cartesian"> 12.3 <sep/> 5 </cn>
12.3+5i
<OMATTR>
<OMATP>
<OMS cd=”nums” name=”complex_cartesian”/>
</OMATP>
<OMF dec=”12.3+5i”/>
</OMATTR>
<cn type="complex-polar"> 2 <sep/> 3.1415 </cn>
\text{Polar} (2,3.1415)
<OMATTR>
<OMATP>
<OMS cd=”nums” name=”complex_polar”/>
</OMATP>
<OMA>
<OMI>2</OMI>
<OMF dec=”3.1415”/>
</OMA>
</OMATTR>
<cn type="constant"> π </cn>
\pi
<OMS cd=”nums” name=”pi”/>
2.2.2. Azonosítók
A <ci> elem szimbolikus nevek leírására használatosak. Ezek általában valamilyen matematikai objektumok azonosítói. Alapállapotban az így meghatározott azonosítók úgy jelennek meg, mintha azokat az <mi> elemmel írtuk volna le.
Egyetlen saját attribútuma van, a type, melynek segítségével határozhatjuk meg a leírni kívánt azonosító típusát, értéke “real”, “integer”, “rational”, “complex-cartesian”, “complex-polar”, “constant”, valamint “interval”, “list”, “matrix”, “matrixrow”, “set”, “vector”, “apply”, “reln”, “lambda”, “fn” lehet. Alapértelmezése a “”, azaz nincs meghatározva.
TEX-ben ugyanazok érvényesek, amelyeket a megjelenítő elemeknél megismertünk.
OpenMath-ban az <OMV/> elemet használjuk az azonosítók leírására. Egyéb attribútumok (pl. indexek) megadására az <OMATTR> és <OMATP> elem pár használatos, melyeket a változó előtt adunk meg. Az <OMATTR> elem jelzi az attribútum megadását, az <OMATP> elem pedig leírja magát, az attribútumot. Hosszabb azonosítóknál használhatjuk az <OMSTR>, valamint az <OMB> elemeket is. Az előbbi egy szöveget, az utóbbi egy bájtsorozatot (betűk, számok, valamint a “+”, “-” “/” “=” jelek) tartalmazhat.
Íme néhány példa:
<ci> x </ci>
x
<OMV name=”x”/>
<ci type="vector"> V </ci>
\bold V
<OMATTR>
<OMATP>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”array”/>
</OMATP>
<OMV name=”V”/>
</OMATTR>
<ci>
<msub>
<mi>x</mi>
<mi>a</mi>
</msub>
</ci>
x_a
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”presentation” name=”style”/>
<OMSTR> subscripted <OMSTR>
</OMATP>
<OMV name=”x”/>
</OMATTR>
<OMV name="a"/>
</OMA>
2.3. Tartalmi elemek csoportba rendezése
Az <apply> elem egy függvény vagy művelet argumentumaival való megjelenítésére szolgál. A MathML tartalmi elemek legnagyobb részét egy ilyen elemmel vezetjük be (funkciójában hasonlít a megjelenítő <mrow> elemre). Az <apply> elem első attribútuma mindig az a művelet, amelyet meg szeretnénk valósítani, ezután következnek a művelet argumentumai. Használata nagymértékben függ attól az elemtől, melyre vonatkozik. Nincs definitionURL attribútuma!
TEX-ben ennek az elemnek leginkább a {} felel meg, de az esetek nagy részében nincs szükség a használatára.
OpenMath-ban az <OMA> elem a megfelelője. Itt is az első argumentum mindig az a művelet (szimbólum), amelyet meg szeretnénk valósítani, ezután következnek a művelet argumentumai.
Példák:
<apply>
<factorial/>
<cn>3</cn>
</apply>
3!
<OMA>
<OMS cd=”arith” name=”factorial”/>
<OMI>3</OMI>
</OMA>
<apply>
<plus/>
<cn>3</cn>
<cn>4</cn>
</apply>
3+4
<OMA>
<OMS cd=”arith” name=”plus”/>
<OMI>3</OMI>
<OMI>4</OMI>
</OMA>
<apply>
<sin/>
<ci>x</ci>
</apply>
\sin x
<OMA>
<OMS cd=”trans” name=”sin”/>
<OMV name=”x”/>
</OMA>
2.4. Deklarációk
A <declare> elemnek két fontos szerepe van: az egyik, hogy megváltoztassuk vagy megadjuk az alapértelmezését egy adott kifejezésnek, a másik, hogy kapcsolatot létesítsünk egy név és egy objektum között. Tipikus használata számítógépes algebra esetén lehetséges.
A <declare>-nek egy vagy két argumentuma lehet, az első egy <ci>-ben leírt azonosító, a második (opcionálisan) egy objektum, mellyel inicializáljuk a változót:
<declare type="vector">
<ci> V </ci>
<vector>
<cn> 1 </cn>
<cn> 2 </cn>
<cn> 3 </cn>
</vector>
</declare>
Az objektum típusának és a deklarált elem típusának meg kell egyeznie. Például, ha az attribútumban “fn”-nek deklaráltuk a változót, akkor az objektumnak is valamilyen függvény-típusúnak kell lennie. Ha deklarációkor nem határozunk meg típust, akkor az objektum típusát vesszük alapértelmezésnek.
Alapértelmezésben érvényessége “local”, azaz helyi, az adott MathML elemre vonatkozó. Ezt a scope attribútum “global”-ra állításával kiterjeszthetjük az egész dokumentumra (a nyitó <math> elemtől kezdődően).
További attribútumok: type, mely a deklaráció típusát határozza meg, bármilyen tartalmi azonosító lehet, alapértelmezése “ci”. A nargs attribútum a függvénydeklaráció argumentumainak számát határozza meg, alapértelmezése 1. Az occurence attribútumban adjuk meg a műveletekbeli szerepet, értéke “prefix”, “infix” vagy “function-model” lehet, ez utóbbi az alapértelmezése.
A <bvar> elemet használjuk az egyes műveletek alapváltozóinak leírásához. Tartalmazhat egy <degree> elemet is, mellyel a változó foka adható meg.
TEX-ben nincs szükség ilyen parancsra, helyette egyszerűen leírjuk az adott kifejezést.
OpenMath-ban ezeket az elemeket <OMS/> és <OMV/> elemek kombinációjával helyettesíthetjük.
<declare type="fn" nargs="2" scope="local">
<ci> f </ci>
<apply>
<plus/>
<ci> F </ci>
<ci> G </ci>
</apply>
</declare>
f\left(x,y\right)=\left(F+G\right)\left(x,y\right)
<OMA>
<OMS cd = "relation" name="eq"/>
<OMA>
<OMV name="f"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMA>
<OMS cd = "linalg" name="vector"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMATTR>
</OMA>
<OMA>
<OMS cd = "arith" name="times"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMA>
<OMS cd = "arith" name="plus"/>
<OMV name="F"/>
<OMV name="G"/>
</OMA>
</OMATTR>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMA>
<OMS cd = "linalg" name="vector"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMATTR>
</OMA>
</OMA>
<declare type="fn">
<ci> J </ci>
<lambda>
<bvar>
<ci> x </ci>
</bvar>
<apply>
<ln/>
<ci> x </ci>
</apply>
</lambda>
</declare>
J\left(x\right)=\ln x
<OMA>
<OMS cd = "relation" name="eq"/>
<OMA>
<OMS cd = "arith" name="times"/>
<OMV name="J"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMV name="x"/>
</OMATTR>
</OMA>
<OMA>
<OMS cd="transc" name="ln"/>
<OMV name="x"/>
</OMA>
</OMA>
<apply>
<int/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<cn> 0 </cn>
</lowlimit>
<uplimit>
<ci> a </ci>
</uplimit>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
</apply>
</apply>
\int\limits_0^a f(x)dx
<OMA>
<OMS cd="calculus" name="defint"/>
<OMA>
<OMS cd="interval" name="interval"/>
<OMI>0</OMI>
<OMV name="a"/>
</OMA>
<OMA>
<OMS cd = "arith" name="times"/>
<OMA>
<OMS cd = "arith" name="times"/>
<OMA>
<OMV name="f"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMV name="x"/>
</OMATTR>
</OMA>
<OMV name="d"/>
</OMA>
<OMV name="x"/>
</OMA>
</OMA>
2.5. Aritmetika, algebra, logika
2.5.1. Alapműveletek
Az összeadás, kivonás, szorzás, osztás leírására MathML-ben rendre a <plus/>, a <minus/>, a <divide/> és a <power/> elemeket használjuk.
A <plus/> elemnek több argumentuma lehet, a többinek kizárólag kettő. Bár a <minus/> esetén egy argumentummal lehetőségünk van leírni a negatív számokat, de ezt kerüljük el, helyette a <cn> elemmel jelöljük a negatív számokat.
TEX-ben az összeadás, a kivonás jelölésére a “+” és “-” jelet használjuk. Szorzás jelölésére – ha szükség van rá – a \cdot parancsot használjuk, ekkor látható lesz a szorzásjel. Az osztás leírására a törtek-nél ismertetett parancsokat használjuk.
OpenMath-ban az alapműveleteket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “minus”, “plus”, “times”, “divide” paraméterekre állításával) helyettesítjük. A szükséges CD minden esetben az “arith”.
<apply>
<plus/>
<ci> x </ci>
<ci> y </ci>
<ci> z </ci>
</apply>
x+y+z
<OMA>
<OMS cd=”arith” name=”plus”/>
<OMV name=”x”/>
<OMV name=”y”/>
<OMV name=”z”/>
</OMA>
<apply>
<minus/>
<ci> x </ci>
<ci> y </ci>
</apply>
x-y
<OMA>
<OMS cd=”arith” name=”minus”/>
<OMV name=”x”/>
<OMV name=”y”/>
</OMA>
<apply>
<times/>
<ci> a </ci>
<ci> b </ci>
</apply>
ab
a\cdot b
<OMA>
<OMS cd=”arith” name=”times”/>
<OMV name=”a”/>
<OMV name=”b”/>
</OMA>
<apply>
<divide/>
<ci> a </ci>
<ci> b </ci>
</apply>
\frac a b
<OMA>
<OMS cd=”arith” name=”divide”/>
<OMV name=”a”/>
<OMV name=”b”/>
</OMA>
2.5.2. Fontosabb aritmetikai, algebrai műveletek
A hatványozás leírására a <power/> elemet használjuk. Argumentumaiban először az alapot, aztán a kitevőt kell megadni. A <root/> elemet használjuk a gyökvonás leírásához. Egy vagy két argumentuma lehet, ha kettő van, akkor az első mindig egy <degree> elem, mely a gyökkitevőt adja meg. Ha nem adjuk meg a <degree> elemet, akkor a gyökkitevő alapértelmezése 2 lesz.
Az osztás maradékának leírásához a <rem/> elemet használjuk, az egész rész meghatározására pedig a <quotient/> elem szolgál. Mindkettőnek két argumentuma van.
Az abszolút érték leírására az <abs/> elemet használjuk.
A <gcd/> elem a legnagyobb közös osztó leírására szolgál, több argumentuma lehet. Faktoriálisok leírására a <factorial/> elemet használjuk, egyetlen argumentuma lehet.
Az <interval> elem egy valós intervallumot ír le. Egyetlen saját attribútuma van, a closure, mely az intervallum zártságát írja le és a következő értékeket veheti fel: “open”, “closed”, “open-closed”, “closed-open”. Alapértelmezés a “closed”. Nincs definitionURL attribútuma!
A <conjugate/> egy argumentumú elemet használjuk a konjugált komplex gyök leírásához.
TEX-ben a hatványozást egyszerűen a “^” jellel írjuk le. A gyökvonásra viszont két parancsunk van. Ha négyzetgyököt kell írnunk használjuk az \sqrt parancsot, mely után kapcsos zárójelekben kell megadni a kifejezést. Ha nem négyzetgyökre van szükségünk, akkor használjuk a \root - \of parancspárt, ahol \root után kell megadni a kitevőt, az \of után pedig a kifejezést.
A maradék jelölésére a \bmod parancsot, az egész rész leírására pedig a “[”, “]” zárójelpárt használjuk, Az abszolút értéket pedig egyszerűen a “|” jellel jelöljük.
A konjugált komplex gyök leírásához használjuk az \overline parancsot, mely után kapcsos zárójelek között kell megadni a kifejezést.
A többi elemnek nincsen megfelelője, ezeket a kinézetüknek megfelelően kell leírni.
OpenMath-ban a <power/>, a <root/>, a <rem/>, a <quotient/>, <abs/>, a <factorial/> és a <conjugate/>, <gcd/> elemeket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “power”, “root”, “rem”, “quotient”, “abs”, “factorial”, “conjugate”, “gcd” beállításával) helyettesítjük. A “root” attribútum esetén az <OMS/> elem első argumentuma a kitevő. A szükséges CD “factorial”, “gcd”, “quotient”, “rem” esetén “integer”, egyébként “arith”.
Az <interval/> elemnek az “interval” CD-ben szereplő “inteval_cc”, “interval_co”, “interval_oc”, “interval_oo” attribútumok felenek meg (“c” – zárt, “o” – nyílt).
Példák:
<apply>
<power/>
<ci> x </ci>
<cn> 3 </cn>
</apply>
x^3
<OMA>
<OMS cd=”arith” name=”power”/>
<OMV name=”x”/>
<OMI> 3 </OMI>
</OMA>
<apply>
<root/>
<degree>
<ci> n </ci>
</degree>
<ci> a </ci>
</apply>
\root n\of a
<OMA>
<OMS cd=”arith” name=”root”/>
<OMV name=”n”/>
<OMV name=”a”/>
</OMA>
<apply>
<rem/>
<ci> a </ci>
<ci> b </ci>
</apply>
a\mod b
<OMA>
<OMS cd=”integer” name=”rem”/>
<OMV name=”a”/>
<OMV name=”b”/>
</OMA>
<apply>
<quotient/>
<ci> a </ci>
<ci> b </ci>
</apply>
\left[ a/b \right]
<OMA>
<OMS cd=”integer” name=”quotient”/>
<OMV name=”a”/>
<OMV name=”b”/>
</OMA>
<apply>
<abs/>
<ci> x </ci>
</apply>
|x|
<OMA>
<OMS cd=”arith” name=”abs”/>
<OMV name=”x”/>
</OMA>
<apply>
<gcd/>
<ci> a </ci>
<ci> b </ci>
<ci> c </ci>
</apply>
\gcd\left(a;b;c\right)
<OMA>
<OMS cd="integer" name="gcd">
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMA>
<OMS cd = "linalg" name="vector"/>
<OMV name="a"/>
<OMV name="b"/>
<OMV name="c"/>
</OMA>
</OMATTR>
</OMA>
<apply>
<factorial/>
<ci> n </ci>
</apply>
n!
<OMA>
<OMS cd=”integer” name=”factorial”/>
<OMV name=”n”/>
</OMA>
<interval closure="open-closed">
<ci> a </ci>
<ci> b </ci>
</interval>
\left(a,b\right]
<OMA>
<OMS cd="interval" name="interval_oc"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<apply>
<conjugate/>
<apply>
<plus/>
<ci> x </ci>
<apply>
<times/>
<cn> ⅈ </cn>
<ci> y </ci>
</apply>
</apply>
</apply>
\overline{x+iy}
<OMA>
<OMS cd=”arith” name=”conjugate”/>
<OMA>
<OMS cd=”arith” name=”plus”/>
<OMV name=”x”/>
<OMA>
<OMS cd=”arith” name=”times”/>
<OMV name=”i”/>
<OMV name=”y”/>
</OMA>
</OMA>
</OMA>
2.5.3. Fontosabb aritmetikai, algebrai függvények
A <max/> és a <min/> elemeket használjuk a maximum és minimum függvények leírásához, több argumentuma lehet.
A logaritmusfüggvények leírására alaptól függően az <ln/> és a <log/> elemeket használhatjuk. Az <ln/> elemet használjuk a természetes alapú, a <log/> elemet pedig az n alapú logaritmus-függvény leírásához. Az előbbinek egy, az utóbbinak egy vagy két argumentuma lehet, ha kettő, akkor az elsőnek egy <logbase> elemnek kell lennie, mely megadja a logaritmus alapját. Ha ez nincs megadva, akkor alapértelmezése a 10 lesz.
Az <exp/> elem az exponenciális függvénynek (az ln függvény inverze) felel meg (), egyetlen argumentuma van.
TEX-ben a minimum- és maximum-függvényekre a \max és a \min parancsokat használjuk.
A logaritmus-függvényekre három parancs áll rendelkezésünkre, az \ln (a természetes alapúra), az \lg (a tízes alapúra) és a \log (az n alapúra), mely utóbbi után alsó indexben (\log_n) megadhatjuk az alapot. Az exponenciális-függvénynek pedig az \exp parancs felel meg.
OpenMath-ban a fenti elemeket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “max”, “min”, “ln”, “log”, “exp” beállításával) helyettesítjük. A szükséges CD a “max” és “min” esetében a “minmax”, a többinél a “transc”.
<apply>
<max/>
<ci> a </ci>
<ci> b </ci>
</apply>
\max\left\{a,b\right\}
<OMA>
<OMS cd=”minmax” name=”max”/>
<OMV name=”a”/>
<OMV name=”b”/>
</OMA>
<apply>
<min/>
<bvar>
<ci>x</ci>
</bvar>
<condition>
<reln>
<notin/>
<ci> x </ci>
<ci type="set"> B </ci>
</reln>
</condition>
<apply>
<power/>
<ci> x </ci>
<cn> 2 </cn>
</apply>
</apply>
\min_x\left\{x^2\mid x\notin B
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”presentation” name=”style”/>
<OMSTR> subscripted </OMSTR>
</OMATP>
<OMA>
<OMS cd=”minmax” name=”min”/>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="set" name="notin"/>
<OMV name="x"/>
<OMV name="B"/>
</OMATP>
<OMA>
<OMS cd=”arith” name=”power”/>
<OMV name="x"/>
<OMI> 2</OMI>
</OMA>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMA>
</OMATTR>
<OMV name=”x”/>
</OMA>
<apply>
<ln/>
<ci> a </ci>
</apply>
\ln a
<OMA>
<OMS cd=”transc” name=”ln”/>
<OMV name=”a”/>
</OMA>
<apply>
<log/>
<logbase>
<cn> 3 </cn7>
</logbase>
<ci> x </ci>
</apply>
\log_3 x
<OMA>
<OMS cd=”transc” name=”log”/>
<OMI> 3 </OMI>
<OMV name=”x”/>
</OMA>
<apply>
<exp/>
<ci> x </ci>
</apply>
\exp x
<OMA>
<OMS cd=”transc” name=”exp”/>
<OMV name=”x”/>
</OMA>
2.5.4. Logikai műveletek
A logikai “és”, “vagy”, “kizáró vagy” és “nem” kifejezések MathML megfelelői rendre az <and/>, az <or/>, az <xor/> és a <not/> elemek. A <not/> elemnek csak egy, a többinek több argumentuma lehet.
Az implikáció leírásához az <implies/> elemet használjuk, melynek két argumentuma van.
A “minden ...-ra/re” kifejezés leírásához a <forall/> elemet, a “létezik olyan ..., hogy” kifejezés leírásához pedig az <exists/> elemet használjuk. Egy <apply> vagy <reln> segítségével mindkettő összekapcsolható egy <condition> elemmel is.
TEX-ben a fenti logikai műveletek megfelelői az <xor/> kivételével rendre a következő parancsok: \land, \lor, \neg, \Rightarrow, \forall, \exists. Az <xor/> megfelelője az \=\lor összetett parancs.
OpenMath-ban a fenti elemeket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “and”, “or”, “xor”, “not”, “implies”, “forall”, “exists” beállításával) helyettesítjük. A szükséges CD a “forall” és “exist” esetében “quant”, egyébként “logic”.
<apply>
<and/>
<ci> a </ci>
<ci> b </ci>
</apply>
a\land b
<OMA>
<OMS cd = "logic" name="and"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<apply>
<or/>
<ci> a </ci>
<ci> b </ci>
</apply>
a\lor b
<OMA>
<OMS cd = "logic" name="or"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<apply>
<xor/>
<ci> a </ci>
<ci> b </ci>
</apply>
a\=\lor b
<OMA>
<OMS cd = "logic" name="xor"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<apply>
<not/>
<ci> a </ci>
</apply>
\neg a
<OMA>
<OMS cd = "logic" name="not"/>
<OMV name="a"/>
</OMA>
<reln>
<implies/>
<ci> A </ci>
<ci> B </ci>
</reln>
A\Rightarrow B
<OMA>
<OMS cd = "logic" name="implies"/>
<OMV name="A"/>
<OMV name="B"/>
</OMA>
<apply>
<forall/>
<bvar>
<ci> n </ci>
</bvar>
<condition>
<apply>
<and/>
<reln>
<in/>
<ci> n </ci>
<ci type="set"> Z </ci>
</reln>
<reln>
<gt/>
<ci> n </ci>
<cn> 0 </cn>
</reln>
</apply>
</condition>
<apply>
<exists/>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<bvar>
<ci> z </ci>
</bvar>
<condition>
<apply>
<reln>
<in/>
<ci> x </ci>
<ci type="set"> Z </ci>
</reln>
<reln>
<in/>
<ci> y </ci>
<ci type="set"> Z </ci>
</reln>
<reln>
<in/>
<ci> z </ci>
<ci type="set"> Z </ci>
</reln>
</apply>
</condition>
<reln>
<eq/>
<apply>
<plus/>
<apply>
<power/>
<ci> x </ci>
<ci> n </ci>
</apply>
<apply>
<power/>
<ci> y </ci>
<ci> n </ci>
</apply>
</apply>
<apply>
<power/>
<ci> z </ci>
<ci> n </ci>
</apply>
</reln>
</apply>
</apply>
\forall n\mid n\in Z\land n>0:\exists x,y,z\mid x,y,z\in Z \Rightarrow
x^n+y^n=z^n
<OMA>
<OMATTR>
<OMATP>
<OMS cd="logic" name="and"/>
<OMA>
<OMS cd="set" name="in"/>
<OMV name="n"/>
<OMV name="Z"/>
</OMA>
<OMA>
<OMS cd="relation" name="gt"/>
<OMV name="n"/>
<OMI> 0 </OMI>
</OMA>
</OMATP>
<OMA>
<OMS cd="quant" name="forall"/>
<OMV name="n"/>
</OMA>
</OMATTR>
<OMV name="n"/>
<OMATTR>
<OMATP>
<OMS cd="logic" name="impies"/>
<OMA>
<OMS cd="set" name="in"/>
<OMA>
<OMS cd="linalg" name="vector"/>
<OMV name="x"/>
<OMV name="y"/>
<OMV name="z"/>
</OMA>
<OMV name="Z"/>
</OMA>
<OMA>
<OMS cd="relation" name="eq"/>
<OMA>
<OMS cd="arith" name="plus"/>
<OMA>
<OMS cd="arith" name="power"/>
<OMV name="x"/>
<OMV name="n"/>
</OMA>
<OMA>
<OMS cd="arith" name="power"/>
<OMV name="y"/>
<OMV name="n"/>
</OMA>
</OMA>
<OMA>
<OMS cd="arith" name="power"/>
<OMV name="z"/>
<OMV name="n"/>
</OMA>
</OMA>
</OMATP>
<OMA>
<OMS cd="quant" name"exists"/>
<OMA>
<OMS cd="linalg" name="vector"/>
<OMV name="x"/>
<OMV name="y"/>
<OMV name="z"/>
</OMA>
</OMA>
</OMATTR>
<OMS cd="linalg" name="vector"/>
<OMV name="x"/>
<OMV name="y"/>
<OMV name="z"/>
</OMA>
2.5.5. Relációk
Egy reláció leírására a <reln> elemet használjuk. Alkalmazása hasonlít az <apply>-ra. Az elem első utóda mindig az a reláció, amelyet meg szeretnénk valósítani, ezután következnek a reláció argumentumai. Az esetek egy részében a relációk meghatározásakor valamilyen feltételt is szabunk. Ezt a MathML-ben a <condition> elem segítségével tehetjük. Használhatjuk olyan speciális halmazok jelölésére is, ahol a halmaz elemei megszámlálhatatlanok. Egyiknek sincs definitionURL attribútuma!
Magukat a relációkat a következő elemek írják le: <eq/> - “egyenlő”; <neq/> - “nem egyenlő”; <gt/> - “nagyobb, mint”; <lt/> - “kisebb, mint”; <geq/> - “nagyobb vagy egyenlő”; <leq/> - “kisebb vagy egyenlő”.
TEX-ben magát a relációt és a feltételt írjuk le. A fenti relációknak rendre a következő jelek, illetve parancsok felelnek meg: “=”, \ne, “>”, “<”, \geq, \leq.
OpenMath-ban a fenti elemeket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “eq”, “neq”, “gt”, “lt”, “geq”, “leq” beállításával) helyettesítjük. A szükséges CD minden esetben a “relation”. A MathML <condition> elem helyettesítése egy <OMATTR> szerkezettel lehetséges.
<reln>
<eq/>
<ci> a </ci>
<ci> b </ci>
</reln>
a=b
<OMA>
<OMS cd="relation" name="eq"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<reln>
<neq/>
<ci> a </ci>
<ci> b </ci>
</reln>
a\ne b
<OMA>
<OMS cd="relation" name="neq"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<reln>
<gt/>
<ci> a </ci>
<ci> b </ci>
</reln>
a>b
<OMA>
<OMS cd="relation" name="gt"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<reln>
<lt/>
<ci> a </ci>
<ci> b </ci>
</reln>
a<b
<OMA>
<OMS cd="relation" name="lt"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<reln>
<geq/>
<ci> a </ci>
<ci> b </ci>
</reln>
a\geq b
<OMA>
<OMS cd="relation" name="geq"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<reln>
<leq/>
<ci> a </ci>
<ci> b </ci>
</reln>
a\leq b
<OMA>
<OMS cd="relation" name="leq"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<condition>
<reln>
<in/>
<ci> x </ci>
<ci type="set"> R </ci>
</reln>
</condition>
x\in R
<OMA>
<OMS cd=”set” name=”in”/>
<OMV name=”x”/>
<OMV name=”R”/>
</OMA>
<apply>
<max/>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<apply>
<and/>
<reln>
<gt/>
<ci> x </ci>
<cn> 0 </cn>
</reln>
<reln>
<lt/>
<ci> x </ci>
<cn> 1 </cn>
</reln>
</apply>
</condition>
<apply>
<minus/>
<ci> x </ci>
<apply>
<sin/>
<ci> x </ci>
</apply>
</apply>
</apply>
\max\left\{x-\sin x\mid0<x<1\right\}
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”presentation” name=”style”/>
<OMSTR> subscripted </OMSTR>
</OMATP>
<OMA>
<OMS cd=”minmax” name=”min”/>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="relation" name="lt"/>
<OMA>
<OMS cd="relation" name="lt"/>
<OMI> 0 </OMI>
<OMV name="x"/>
</OMA>
<OMI> 1 </OMI>
</OMATP>
<OMA>
<OMS cd=”arith” name=”minus”/>
<OMV name="x"/>
<OMA>
<OMS cd="transc" name="sin"/>
<OMV name="x"/>
</OMA>
</OMA>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMA>
</OMATTR>
<OMV name=”x”/>
</OMA>
2.6. Függvénytan
2.6.1. Felhasználói függvények
Egy felhasználó által készített függvény leírását az <fn> elem segítségével végezhetjük el. Ezen kívül lehetőségünk van egy speciális azonosító-függvény létrehozására is, az <ident/> elemmel.
TEX-ben ezeknek az elemeknek nincs megfelelője, csak magát a függvényeket írjuk le.
OpenMath-ban egy <OMA> és egy <OMS/> elem kapcsolatával fejezhetjük ki, ahol az <OMS/> elemben írjuk le magát a felhasználói függvényt. Több, egymásba ágyazott függvény esetén az <OMA> elem helyett használhatjuk az <OMBIND>, <OMBVAR/> elempárt is, mely magát az egymásba ágyazást jelöli. Az azonosítót az “fns” CD-beli “identity” attribútummal képezhetjük.
<fn>
<ci> L </ci>
</fn>
L
<OMA>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
<OMV name=”L”/>
</OMA>
<fn definitionURL="http://www.defs.org/MyDefinition.txt">
<ci>
<msub>
<mi>J</mi>
<mn>0</mn>
</msub>
</ci>
</fn>
J_0
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”presentation” name=”style”/>
<OMSTR> subscripted </OMSTR>
</OMATP>
<OMA>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
<OMV name=”J”/>
</OMA>
</OMATTR>
<OMI> 0 </OMI>
</OMA>
<fn>
<apply>
<plus/>
<ci> f </ci>
<ci> g </ci>
</apply>
</fn>
f+g
<OMA>
<OMS cd=”arith” name=”plus”/>
<OMA>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
<OMV name=”f”/>
</OMA>
<OMA>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
<OMV name=”g”/>
</OMA>
</OMA>
<reln>
<eq/>
<apply>
<compose/>
<fn>
<ci> f </ci>
</fn>
<apply>
<inverse/>
<fn>
<ci> f </ci>
</fn>
</apply>
</apply>
<ident/>
</reln>
f\circ f^{-1}=id
<OMA>
<OMS cd=”relation” name=”eq”/>
<OMA>
<OMS cd=”fns” name=”left_compose”/>
<OMA>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
<OMV name=”f”/>
</OMA>
<OMA>
<OMS cd=”fns” name=”inverse”/>
<OMA>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
<OMV name=”f”/>
</OMA>
</OMA>
</OMA>
<OMA>
<OMS cd=”fns” name=”identity”/>
<OMV name=”id”/>
</OMA>
</OMA>
2.6.2. A lambda függvény
A <lambda> elemet egy olyan felhasználó által meghatározott függvény esetében használjuk, amelyet egy adott kifejezésből és egy vagy több független változóból készítünk. Utódaiban először a változókat kell megadnunk, majd utoljára az aktuális paraméterértékeket.
Ha egy <declare> elem argumentumaként használjuk, akkor meghatározhatjuk a függvény nevét is.
TEX-ben nincs szükség ilyen parancsra, helyette egyszerűen leírjuk az adott kifejezést (a függvényhez használhatjuk a \lambda parancsot).
OpenMath-ban ezt az elemet az <OMBIND> - <OMBVAR/> elempárossal írhatjuk le. Az <OMBVAR/> elem határozza meg a függvény változóját. A szükséges CD az “fns”.
<lambda>
<bvar>
<ci> x </ci>
</bvar>
<apply>
<sin/>
<apply>
<plus/>
<ci> x </ci>
<cn> 1 </cn>
</apply>
</apply>
</lambda>
\lambda\left(x,\sin x+1\right)
<OMBIND>
<OMS cd=”fns” name=”lambda”/>
<OMBVAR>
<OMV name=”x”/>
</OMBVAR>
<OMA>
<OMS cd=”transc” name=”sin”/>
<OMA>
<OMS cd=”arith” name=”plus”/>
<OMV name=”x”/>
<OMI> 1 </OMI>
</OMA>
</OMA>
</OMBIND>
2.6.3. Függvényekkel végzett műveletek
Függvények inverzét az <inverse/> elemmel írhatjuk le.
A <compose/> elem segítségével függvények kompozícióját jelölhetjük.
TEX-ben az inverz-függvénynek nincsen külön parancsa, indexek segítségével írhatjuk le. A függvénykompozíció jelölésére használjuk a \circ parancsot.
OpenMath-ban a fenti műveleteket egy <OMS/> elem megfelelő paraméterezésével (a name attribútum “inverse”, ”left_compose” beállításával) érhetjük el. A szükséges CD az “fns”.
<apply>
<inverse definitionURL="MyDefinition.def"/>
<ci> f </ci>
</apply>
f^{-1}
<OMA>
<OMS cd=”fns” name=”inverse”/>
<OMV name=”f”/>
</OMA>
<apply>
<apply>
<compose/>
<fn>
<ci> f </ci>
</fn>
<fn>
<ci> g </ci>
</fn>
</apply>
<ci> x </ci>
</apply>
\left(f\circ g\right)\left(x\right)
<OMA>
<OMS cd=”fns” name=”compose”/>
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
</OMATP>
<OMV name=”f”/>
</OMATTR>
</OMA>
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
</OMATP>
<OMV name=”g”/>
</OMATTR>
</OMA>
<OMV name=”x”/>
</OMA>
2.7. Integrál- és differenciálszámítás
2.7.1. Integrálszámítás
Az <int/> elemet használjuk az integrál leírásához. A változó megadásához a <bvar> elem szükséges. Az alsó és felső határ megadására több módszer közül választhatunk: az egyik a <lowlimit> és az <uplimit> elemek használata; a másik az <interval> elem használata, ebben az esetben mindkét határt az <interval> elem utódaként kell megadnunk; a harmadik pedig a <condition> elem segítségével, halmazként adjuk meg a határokat.
TEX-ben az \int parancsot használjuk az integrál leírására. A határokat a \limits parancs után indexek segítségével adjuk meg.
OpenMath-ban az integrál és intervallumának leírására az <OMS/> elemet használhatjuk, a megfelelő paraméterezéssel (a name attribútum “defint”, “interval”; halmazként való megadás esetén “lambda” beállításával). A szükséges CD “defint” esetén “calculus”, “interval”-nál “interval”, “lambda”-nál pedig “fns”.
Példa a <lowlimit>, <uplimit>, és <bvar> használatára:
<apply>
<int/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<cn> 0 </cn>
</lowlimit>
<uplimit>
<ci> a </ci>
</uplimit>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
</apply>
</apply>
\int\limits_0^a f(x)dx
<OMA>
<OMS cd=”calculus” name=”defint”/>
<OMA>
<OMS cd="interval" name="interval"/>
<OMI> 0 </OMI>
<OMV name="a"/>
</OMA>
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
</OMATP>
<OMV name=”f”/>
</OMATTR>
<OMV name=”x”/>
</OMA>
</OMA>
Példa az <interval> használatára:
<apply>
<int/>
<bvar>
<ci> x </ci>
</bvar>
<interval>
<ci> a </ci>
<ci> b </ci>
</interval>
<apply>
<cos/>
<ci> x </ci>
</apply>
</apply>
\int\limits_a^b \cos x dx
<OMA>
<OMS cd=”calculus” name=”defint”/>
<OMA>
<OMS cd="interval" name="interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMA>
<OMS cd="transc" name="cos"/>
<OMV name="x"/>
</OMA>
</OMA>
Példa a <condition> használatára:
<apply>
<int/>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<reln>
<in/>
<ci> x </ci>
<ci type="set"> D </ci>
</reln>
</condition>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
</apply>
</apply>
\int\limits_{x\in D} f(x)dx
<OMA>
<OMS cd=”calculus” name=”defint”/>
<OMV name="D"/>
<OMBIND>
<OMS cd="fns" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
</OMATP>
<OMV name=”f”/>
</OMATTR>
<OMV name=”x”/>
</OMA>
</OMBIND>
</OMA>
2.7.2. Differenciálszámítás
A <diff/> elemet használjuk a differenciálhányados leírásához. A változó megadásához a <bvar> elem szükséges.
A parciális differenciál leírásához a <partialdiff/> elemet használjuk. A változó megadásához a <bvar> elem szükséges. Ez a <bvar> tartalmazhat egy <degree> elemet is mellyel a parciális derivált foka adható meg.
TEX-ben nincs rá külön parancs, a kifejezést egyszerűen leírjuk. Egyedül a δ jelnek van speciális megjelenítése, ez a \partial parancs.
OpenMath-ban a fenti elemeket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “diff” vagy “partialdiff” beállításával) helyettesítjük. A szükséges CD a “calculus”.
<apply>
<diff/>
<bvar>
<ci> x </ci>
</bvar>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
</apply>
</apply>
\frac d{dx} f(x)
<OMA>
<OMS cd=”calculus” name=”diff”/>
<OMV name=”x”/>
<OMA>
<OMATTR>
<OMATP>
<OMS cd=”ecc” name=”type”/>
<OMS cd=”ecc” name=”function”/>
</OMATP>
<OMV name=”f”/>
</OMATTR>
<OMV name=”x”/>
</OMA>
</OMA>
<apply>
<partialdiff/>
<bvar>
<ci> x </ci>
<degree>
<cn> 2 </cn>
</degree>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
<ci> y </ci>
</apply>
</apply>
\frac{\partial^2}{\partial x^2}\frac{\partial}{\partial y} f(x,y)
<OMA>
<OMA>
<OMS cd="calculus" name="partialdiff"/>
<OMBIND>
<OMS cd="fns" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMBVAR>
<OMV name="y"/>
</OMBVAR>
<OMA>
<OMV name="f"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMV name="x"/>
<OMV name="y"/>
</OMATTR>
</OMA>
</OMBIND>
</OMA>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
2.8. Halmazelmélet
2.8.1. Halmazok megadása
A <set> elemet használjuk általában a halmazok leírásához. Ha a halmaz elemeinek sorrendje is fontos, akkor a <list> elemet használjuk. A halmazokat vagy felsorolással, vagy a <bvar> és a <condition> elemek segítségével adhatjuk meg. A <set>-nél megadható a type argumentum, értékei “normal” és “multiset”, ez utóbbi megengedi az elemek ismétlődését, alapértelmezés a “normal”. A <list> saját attribútuma az order, mellyel a sorrend típusát adhatjuk meg, két értéket vehet fel, a sorrend lehet “lexicographic” vagy “numeric”, alapértelmezés az utóbbi.
Egyiknek sincs definitionURL attribútuma!
Hogy egy adott elem része-e a halmaznak, azt az <in/> és a <notin/> elemmel írhatjuk le. Mindkettőnek két argumentuma van.
TEX-ben a halmazok megadására nincs külön parancs, a halmazok elemeit és egyéb paramétereit egyszerűen leírjuk. Az “eleme”, “nem eleme” kifejezéseket az \in, \notin parancsokkal írhatjuk le.
OpenMath-ban a halmazok megadását az <OMS/> elem megfelelő paraméterezésével (a name attribútum “set”, “list”, “in”, “notin” beállításával) végezzük el. A szükséges CD “list” esetén “list”, egyébként ”set”.
<set>
<ci> b </ci>
<ci> a </ci>
<ci> c </ci>
</set>
\left\{a,b,c\right\}
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>{</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>}</OMSTR>
</OMATP>
<OMA>
<OMS cd = "set" name="set"/>
<OMV name="a"/>
<OMV name="b"/>
<OMV name="c"/>
</OMA>
</OMATTR>
<set>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<reln>
<lt/>
<ci> x </ci>
<cn> 5 </cn>
</reln>
</condition>
</set>
\left\{x\mid x<5\right\}
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>{</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>}</OMSTR>
</OMATP>
<OMA>
<OMS cd="relation" name="lt"/>
<OMV name="x"/>
<OMI> 5 </OMI>
</OMATTR>
<list>
<ci> b </ci>
<ci> a </ci>
<ci> c </ci>
</list>
\left\[a,b,c\right\]
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>[</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>]</OMSTR>
</OMATP>
<OMA>
<OMS cd = "set" name="set"/>
<OMV name="a"/>
<OMV name="b"/>
<OMV name="c"/>
</OMA>
</OMATTR>
<list order="numeric">
<bvar>
<ci> x </ci>
</bvar>
<condition>
<reln>
<lt/>
<ci> x </ci>
<cn> 5 </cn>
</reln>
</condition>
</list>
\left\[x\mid x<5\right\]
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>[</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>]</OMSTR>
</OMATP>
<OMA>
<OMS cd="relation" name="lt"/>
<OMV name="x"/>
<OMI> 5 </OMI>
</OMA>
</OMATTR>
<reln>
<in/>
<ci> a </ci>
<ci type="set"> A </ci>
</reln>
a\in A
<OMA>
<OMS cd=”set” name=”in”/>
<OMV name=”a”/>
<OMV name=”A”/>
</OMA>
<reln>
<notin/>
<ci> a </ci>
<ci> A </ci>
</reln>
a\notin A
<OMA>
<OMS cd=”set” name=”notin”/>
<OMV name=”a”/>
<OMV name=”A”/>
</OMA>
2.8.2. Halmazműveletek
A MathML-ben a következő halmazműveletek ismertek: <union/> - “unió”; <intersect/> - “metszet”; <subset/> - “részhalmaz”; <prsubset/> - “valódi részhalmaz”; <notsubset/> - “nem részhalmaza”; <notprsubset/> - “nem valódi részhalmaza”; <setdiff/> - “különbség”. Az <union/>-nak és az <intersect/>-nek több, a maradéknak két argumentuma lehet.
A fenti elemek TEX megfelelői: \cup, \cap, \subseteq, \subset, \not\subseteq, \not\subset, \setminus.
OpenMath-ban a fenti elemeket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “union”, “intersect”, “subset”, “notsubset”, “prsubset”, “notprsubset”, “setdiff” beállításával) helyettesítjük. A szükséges CD minden esetben a “set”.
<apply>
<union/>
<ci> A </ci>
<ci> B </ci>
</apply>
A\cup B
<OMA>
<OMS cd=”set” name=”union”/>
<OMV name=”A”/>
<OMV name=”B”/>
</OMA>
<apply>
<intersect/>
<ci type="set"> A </ci>
<ci type="set"> B </ci>
</apply>
A\cap B
<OMA>
<OMS cd=”set” name=”intersect”/>
<OMV name=”A”/>
<OMV name=”B”/>
</OMA>
<reln>
<subset/>
<ci> A </ci>
<ci> B </ci>
</reln>
A\subseteq B
<OMA>
<OMS cd=”set” name=”subset”/>
<OMV name=”A”/>
<OMV name=”B”/>
</OMA>
<reln>
<prsubset/>
<ci> A </ci>
<ci> B </ci>
</reln>
A\subset B
<OMA>
<OMS cd=”set” name=”prsubset”/>
<OMV name=”A”/>
<OMV name=”B”/>
</OMA>
<reln>
<notsubset/>
<ci> A </ci>
<ci> B </ci>
</reln>
A\not\subseteq B
<OMA>
<OMS cd=”set” name=”notsubset”/>
<OMV name=”A”/>
<OMV name=”B”/>
</OMA>
<reln>
<notprsubset/>
<ci> A </ci>
<ci> B </ci>
</reln>
A\not\subset B
<OMA>
<OMS cd=”set” name=”notprsubset”/>
<OMV name=”A”/>
<OMV name=”B”/>
</OMA>
<apply>
<setdiff/>
<ci> A </ci>
<ci> B </ci>
</apply>
A\setminus B
<OMA>
<OMS cd=”set” name=”setdiff”/>
<OMV name=”A”/>
<OMV name=”B”/>
</OMA>
2.9. Sorozatok
Egy sorozat határértékének leírásához a <limit/> elemet használjuk. A határpont megadása a <lowlimit> elemmel, vagy a <condition> elemmel lehetséges. Az összegzés indexét a <bvar> elemmel adhatjuk meg.
Azt, hogy egy adott sorozat mihez tart, azt a <tendsto/> elem segítségével adjuk meg, melynek két argumentuma van. Az irányt a type attribútummal határozhatjuk meg, melynek értékei a következők lehetnek: “above”, “bellow”, “two-sided”, alapértelmezése az “above”.
Egy sorozat elemeinek összegzéséhez, a szumma leírásához a <sum/> elemet használjuk. A <product/> elemet használjuk a sorozat elemeinek szorzatának, a produktum leírásához. Mindkettőnél a felső és alsó határ megadása az <int/> elemnél megismert módon vagy <uplimit> és <lowlimit> elemekkel, vagy a <condition> elemmel lehetséges. Az összegzés indexét a <bvar> elemmel adhatjuk meg.
TEX-ben a határérték leírására a \lim parancsot használjuk, mely után, a \limits és a \to parancs párral adhatjuk meg hogy a határérték mihez tart. A MathML <tendsto/> elemének megfelelői TEX-ben iránytól és nagyságtól függően a következők: \leftarrow, \rightarrow, \leftrightarrow; \longleftarrow, \longrightarrow, \longleftrightarrow.
A szumma és a produktum leírása a \sum és \prod parancsokkal történik, melyek után kiemelt matematikai módban indexekkel, egyébként a \limits paranccsal lehet megadni a kívánt határokat.
A végtelen (∞) leírására használjuk az \infty parancsot.
OpenMath-ban a fenti elemeket az <OMS/> elem megfelelő paraméterezésével (a name attribútum “limit”, “sum”, “product” beállításával) helyettesítjük. A <tendsto/> megfelelői az <OMS>-ban a name attribútum “above”, “below”, “both_sides” beállításai. A “sum” és “product” beállításnál az intervallum leírására szintén egy <OMS/> elem megfelelő paraméterezése (a name attribútum “interval”; halmazként való megadás esetén “lambda” beállításával) használatos. A szükséges CD a “sum”, “product” műveleteknél az “arith”, “interval”-nál “interval”, “lambda”-nál “fns”, a többinél a “limit”.
A végtelen megfelelője az “infinity”, mely a “nums” CD-ben található.
<apply>
<limit/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<cn> 0 </cn>
</lowlimit>
<apply>
<sin/>
<ci> x </ci>
</apply>
</apply>
\lim\limits_{n \to 0}\sin x
<OMA>
<OMS cd=”limit” name=”limit”/>
<OMA>
<OMS cd=”transc” name=”sin”/>
<OMV name=”x”/>
</OMA>
</OMA>
<reln>
<tendsto type="above"/>
<apply>
<power/>
<ci> x </ci>
<cn> 2 </cn>
</apply>
<apply>
<power/>
<ci> a </ci>
<cn> 2 </cn>
</apply>
</reln>
x^2\rightarrow a^2
<OMA>
<OMS cd = "limit" name="above"/>
<OMA>
<OMS cd="arith" name="power"/>
<OMV name="x"/>
<OMI>2</OMI>
</OMA>
<OMA>
<OMS cd="arith" name="power"/>
<OMV name="a"/>
<OMI>2</OMI>
</OMA>
</OMA>
<apply>
<sum/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<ci> a </ci>
</lowlimit>
<uplimit>
<ci> b </ci>
</uplimit>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
</apply>
</apply>
\sum\limits_{x=a}^b f(x)
<OMA>
<OMS cd="arith" name="sum"/>
<OMA>
<OMS cd="interval" name="integer-interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMBIND>
<OMS cd="fns" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMV name="f"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMV name="x"/>
</OMATTR>
</OMA>
</OMBIND>
</OMA>
<apply>
<product/>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<reln>
<in/>
<ci> x </ci>
<ci type="set"> B </ci>
</reln>
</condition>
<apply>
<fn>
<ci> f </ci>
</fn>
<ci> x </ci>
</apply>
</apply>
\prod_{x\in B} f(x)
<OMA>
<OMS cd="arith" name="product"/>
<OMV name="B"/>
<OMBIND>
<OMS cd="fns" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMV name="f"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMV name="x"/>
</OMATTR>
</OMA>
</OMBIND>
</OMA>
2.10. Trigonometria
A trigonometriai függvények széles körben ismertek, ezért külön-külön történő ismertetésüktől eltekintek, de álljon itt felsorolásuk:
<sin/>, <cos/>, <tan/>, <cot/>, <sec/>, <csc/>, <sinh/>, <cosh/>, <tanh/>, <coth/>, <sech/>, <csch/>, <arcsin/>, <arccos/>, <arctan/>
Minden trigonometriai elemnek egyetlen argumentuma van.
TEX-ben a fenti elemeknek megfelelő parancsok rendre: \sin, \cos, \tan, \cot, \sec, \csc, \sinh, \cosh, \tanh, \coth, \arcsin, \arccos, \arctan. A <sech/> és a <csch/> elemeknek nincsenek megfelelői.
OpenMath-ban a trigonometriai elemeket egy <OMS/> elem name attribútumában adhatjuk meg. A szögfüggvények nevei megegyeznek a fenti nevekkel. A trigonometriai függvényeket tartalmazó CD neve “transc”.
<apply>
<sin/>
<ci> x </ci>
</apply>
\sin x
<OMA>
<OMS cd=”transc” name=”sin”/>
<OMV name=”x”/>
</OMA>
<apply>
<sin/>
<apply>
<plus/>
<apply>
<cos/>
<ci> x </ci>
</apply>
<apply>
<power/>
<ci> x </ci>
<cn> 3 </cn>
</apply>
</apply>
</apply>
\sin(\cos x+x^3)
<OMA>
<OMS cd="transc" name="sin"/>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMA>
<OMS cd = "arith" name="plus"/>
<OMA>
<OMS cd="transc" name="cos"/>
<OMV name="x"/>
</OMA>
<OMA>
<OMS cd="arith" name="power"/>
<OMV name="x"/>
<OMI>3</OMI>
</OMA>
</OMA>
</OMATTR>
</OMA>
2.11. Statisztika
A statisztikai műveletek közül a következőket találjuk meg MathML-ben: <mean/> - átlag; <sdev/> - szórás; <variance/> - szórásnégyzet; <median/> - medián; <mode/> - módusz; <moment/> - statisztikai momentum. Ez utóbbinál a momentum fokát a <degree> elemmel határozhatjuk meg.
TEX-ben a fenti elemeknek nincsenek megfelelői.
OpenMath-ban a fenti elemek leírására az <OMS/> elemet használhatjuk, a megfelelő paraméterezéssel (a name attribútum “mean”, “sdev”, “variance”, “median”, “mode”, “moment” beállításával). A szükséges CD a “stats”.
<apply>
<mean/>
<ci> X </ci>
</apply>
\overline X
<OMA>
<OMS cd=”stats” name=”mean”/>
<OMV name=”X”/>
</OMA>
<apply>
<sdev/>
<ci> X </ci>
</apply>
\sigma(X)
<OMA>
<OMS cd=”stats” name=”sdev”/>
<OMV name=”x”/>
</OMA>
<apply>
<variance/>
<ci> X </ci>
</apply>
\sigma^2 (X)
<OMA>
<OMS cd=”stats” name=”variance”/>
<OMV name=”x”/>
</OMA>
<apply>
<median/>
<ci> X </ci>
</apply>
\rm{median}(X)
<OMA>
<OMS cd=”stats” name=”median”/>
<OMV name=”x”/>
</OMA>
<apply>
<mode/>
<ci> X </ci>
</apply>
\m{mode}(X)
<OMA>
<OMS cd=”stats” name=”mode”/>
<OMV name=”x”/>
</OMA>
<apply>
<moment/>
<degree>
<cn> 3 </cn>
</degree>
<ci> X </ci>
</apply>
\left\langle X^3\right\rangle
<OMA>
<OMS cd=”stats” name=”moment”/>
<OMV name=”x”/>
</OMA>
2.12. Lineáris algebra
2.12.1. Vektorok
A <vector> elemet használjuk a vektorok leírásához. Argumentumai írják le a vektor komponenseit. A vektorok tartalmilag egy egysoros mátrixhoz hasonlíthatók.
TEX-ben nincs megfelelője.
OpenMath-ban a vektorok leírására az <OMS/> elemet használhatjuk, a megfelelő paraméterezéssel (a name attribútum “vector” beállításával). A szükséges CD a “linalg”.
<vector>
<cn> 1 </cn>
<cn> 2 </cn>
<cn> 3 </cn>
<ci> x </ci>
</vector>
\left(1,2,3,x\right)
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>(</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>)</OMSTR>
</OMATP>
<OMA>
<OMS cd = "linalg" name="vector"/>
<OMI>1</OMI>
<OMI>2</OMI>
<OMI>3</OMI>
<OMV name="x"/>
</OMA>
</OMATTR>
2.12.2. Mátrixok
A mátrixok leírásához a <matrix> elemet használjuk. Argumentumai csak <matrixrow> elemek lehetnek, ezek írják le a mátrix sorait.
TEX-ben a megjelenítő elemek táblákkal és mátrixokkal foglalkozó fejezetében leírtak érvényesek itt is.
OpenMath-ban a mátrixok leírására az <OMS/> elemet használhatjuk, a megfelelő paraméterezéssel (a name attribútum beállításával: a “matrix” írja le magát a mátrixot, a “matrixrow” pedig a mátrix sorait). A szükséges CD a “linalg”.
<matrix>
<matrixrow>
<cn> 0 </cn>
<cn> 1 </cn>
<cn> 0 </cn>
</matrixrow>
<matrixrow>
<cn> 0 </cn>
<cn> 0 </cn>
<cn> 1 </cn>
</matrixrow>
<matrixrow>
<cn> 1 </cn>
<cn> 0 </cn>
<cn> 0 </cn>
</matrixrow>
</matrix>
\bmatrix 0&1&0\\0&0&1\\1&0&0\endbmatrix
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>[</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>]</OMSTR>
</OMATP>
<OMA>
<OMS cd = "linalg" name="matrix"/>
<OMA>
<OMS cd = "linalg" name="matrixrow"/>
<OMI>0</OMI>
<OMI>1</OMI>
<OMI>0</OMI>
</OMA>
<OMA>
<OMS cd = "linalg" name="matrixrow"/>
<OMI>0</OMI>
<OMI>0</OMI>
<OMI>1</OMI>
</OMA>
<OMA>
<OMS cd = "linalg" name="matrixrow"/>
<OMI>1</OMI>
<OMI>0</OMI>
<OMI>0</OMI>
</OMA>
</OMA>
</OMATTR>
2.12.3. Mátrixműveletek
A determinánsok leírására a <determinant/> elemet használjuk. Egy mátrix transzponáltját a <transpose/> elemmel írjuk le.
A <selector/> elemet használjuk egy mátrix, vektor vagy lista elemeinek kiválasztásához. Argumentumai közül az első mindig az objektumot határozza meg, a második kiválasztja az objektum elemét, mátrixok esetén a sort, harmadiknak csak mátrix esetén van értelme (egyébként nem vesszük figyelembe), a megadott sor oszlopát jelöli ki. Mátrix esetén, ha a harmadik argumentum nincs megadva, akkor hatása az egész sorra vonatkozik.
TEX-ben csak a determináns leírására van parancs, ez pedig a \det. A transzponált leírását egyszerűen indexeléssel írjuk le. A <selector/> elemnek nincs megfelelője, mivel ezt csak számítógépes algebrában használjuk.
OpenMath-ban a fenti elemek leírására az <OMS/> elemet használhatjuk, a megfelelő paraméterezéssel (a name attribútum “determinant”, “transpose”, “selector” beállításával). A szükséges CD a “linalg”.
<apply>
<determinant/>
<ci type="matrix"> A </ci>
</apply>
\det\rm\bf A
<OMA>
<OMS cd=”linalg” name=”determinant”/>
<OMV name=”A”/>
</OMA>
<apply>
<transpose/>
<ci type="matrix"> A </ci>
</apply>
A^T
<OMA>
<OMS cd=”linalg” name=”transpose”/>
<OMV name=”x”/>
</OMA>
A következő példában
<apply>
<selector/>
<matrix>
<matrixrow>
<cn> 1 </cn>
<cn> 2 </cn>
</matrixrow>
<matrixrow>
<cn> 3 </cn>
<cn> 4 </cn>
</matrixrow>
</matrix>
<cn> 1 </cn>
</apply>
<OMA>
<OMS cd=”linalg” name=”selector”/>
<OMI> 1 </OMI>
<OMATTR>
<OMATP>
<OMS cd="presentation" name="left"/>
<OMSTR>[</OMSTR>
<OMS cd="presentation" name="right"/>
<OMSTR>]</OMSTR>
</OMATP>
<OMA>
<OMS cd = "linalg" name="matrix"/>
<OMA>
<OMS cd = "linalg" name="matrixrow"/>
<OMI>1</OMI>
<OMI>2</OMI>
</OMA>
<OMA>
<OMS cd = "linalg" name="matrixrow"/>
<OMI>3/OMI>
<OMI>4</OMI>
</OMA>
</OMA>
</OMATTR>
</OMA>
mivel csak két argumentumunk van, a mátrix első sora lesz kiválasztva:
<matrixrow>
<cn> 1 </cn>
<cn> 2 </cn>
</matrixrow>
<OMA>
<OMS cd = "linalg" name="matrixrow"/>
<OMI>1</OMI>
<OMI>2</OMI>
</OMA>
2.13. Szemantikai elemek
A <semantics> elemet többletinformációk hozzáfűzésére használjuk. Első argumentuma mindig egy MathML kódú kifejezés, amihez a megjegyzést fűzzük. A következő argumentumoknak kötelezően <annotation> vagy <annotation-xml> elemmel kell kezdődniük, ezek írják le magát a megjegyzést. A két elem között az a különbség, hogy az elsőben csak nem XML-alapú leírást adhatunk meg, a másodikban viszont csak XML-alapút. Egy saját attribútumuk van, az encoding, melyben meghatározhatjuk, hogy az adott megjegyzés milyen formátumú. Alapértelmezése “”, vagyis nincs meghatározva.
Általában a kifejezés úgy jelenik meg, ahogyan azt az első argumentumban leírtuk. Esetenként a megjelenítő figyelembe veheti a hozzáfűzött információt, ezt elsősorban a tartalmi és megjelenítő elemek keverésekor használhatjuk ki.
A szemantikai elemeknek nincsenek megfelelőik sem TEX-ben, sem OpenMath-ban, viszont egy MathML kódhoz ezekkel az elemekkel kapcsolhatunk TEX és OpenMath kódokat is.
A következő példa azt mutatja be, hogy a kifejezést és különböző formátumú értelmezéseit hogyan valósíthatjuk meg:
<semantics>
<apply>
<plus/>
<apply>
<sin/>
<ci> x </ci>
</apply>
<cn> 5 </cn>
</apply>
<annotation encoding="TEX">
\sin x + 5
</annotation>
<annotation-xml encoding="OpenMath">
<OMA>
<OMS cd=”arith” name="plus"/>
<OMA>
<OMS cd=”transc” name="sin"/>
<OMV name="x"/>
</OMA>
<OMI> 5 </OMI>
</OMA>
</annotation-xml>
</semantics>