Lisez-moi S.V.P. 

4 Le balisage de contenu

Table des matières : Le langage de balisage mathématique (MathML) version 2.0
Chapitre précédent : 3 Le balisage de présentation
Chapitre suivant : 5 La combinaison des balisages de présentation et de contenu

4.1 Introduction

4.1.1 Les visées du balisage de contenu

Comme indiqué en introduction de cette recommandation, on peut différencier les mathématiques par leur utilisation d'un langage (relativement) formel : la notation mathématique. Toutefois, on ne devrait pas assimiler les mathématiques et leur présentation à une seule et même chose. Les sommes ou les produits mathématiques ont une existence et une signification pour nombre d'applications qui est entièrement indépendante de leurs rendus sonores ou visuels. Dans le langage de balisage mathématique, l'objectif du balisage de contenu est de fournir un codage explicite de la structure mathématique sous-jacente d'une expression plutôt qu'un rendu particulier de celle-ci.

Il y a beaucoup de raisons de fournir un codage spécifique du contenu. Même l'usage discipliné et systématique de balises de présentation ne peut pas saisir exactement ces informations sémantiques. Car, sans d'autres informations, il est impossible de décider si une présentation particulière a été délibérément choisie pour coder la structure mathématique ou juste pour obtenir un effet visuel ou sonore particuliers. En outre, un auteur utilisant le même codage pour gérer à la fois la présentation et la structure mathématique pourrait être privé d'un certain codage de présentation simplement parce qu'une convention le réserve à un autre usage sémantique.

Les difficultés proviennent de ce qu'il existe des correspondances de plusieurs à un entre la présentation et la sémantique, et vice versa. Par exemple, le concept mathématique H multiplié par e est souvent codé en se servant d'un opérateur explicite comme dans H × e. Dans d'autres contextes de présentation, l'opérateur de multiplication peut être invisible H e, ou rendu parlé par fois. Généralement, plusieurs présentations différentes sont possibles selon le contexte et les préférences de style de l'auteur ou du lecteur. Ainsi, il peut être impossible de décider si l'expression H e hors contexte représente le nom d'un élément chimique ou le produit mathématique des deux variables H et e.

La présentation mathématique change également avec la culture et dans le temps : certaines expressions des mathématiques combinatoires ont aujourd'hui une signification très différente pour un mathématicien russe et un mathématicien français (cf. la section 5.4.1 Les feuilles de style de notation pour un exemple). Les notations peuvent ne plus avoir cours, par exemple, l'utilisation des symboles musicaux dièse et bémol pour indiquer un maximum et un minimum [Chaundy1954]. Une notation en usage en 1644 pour la multiplication mentionnée précédemment était la suivante :
\blacksquare H e [Cajori1928].

Lorsqu'on code explicitement la structure mathématique sous-jacente, sans se préoccuper de sa représentation auditive ou visuelle, on peut échanger des informations de manière plus précise avec les systèmes capables de manipuler des mathématiques. Dans l'exemple trivial précédent, un tel système pourrait remplacer les variables H et e par des valeurs et évaluer le résultat. D'autres domaines d'application intéressants comprennent les livres électroniques interactifs et autres matériels didactiques.

4.1.2 La portée du balisage de contenu

La sémantique de la notation mathématique générale ne fait pas l'objet d'un consensus. La codification systématique de la plupart des mathématiques serait un travail gigantesque, une tâche sans fin. Au lieu de cela, MathML rend explicite un nombre relativement faible de concepts mathématiques courants, soigneusement choisis pour suffire dans beaucoup d'applications. En outre, il offre un mécanisme permettant d'associer une sémantique à une nouvelle structure de notation. De cette façon, on pourra toujours coder les concepts mathématiques qui n'appartiennent pas à l'ensemble des éléments de base (section 4.2.6 La syntaxe et la sémantique).

Le jeu de base des éléments de contenu est choisi pour convenir au codage simple de la plupart des formules utilisées des classes primaires aux classes secondaires aux États-Unis, et probablement au-delà jusqu'au deux premières années d'enseignement supérieur, c'est-à-dire jusqu'au niveau A aux Étas-Unis et au niveau baccalauréat en Europe. Les domaines couverts dans une certaine mesure dans MathML sont les suivants :

Nous ne prétendons ni même suggérons que le jeu des éléments proposés est complet dans ces domaines, mais les possibilités d'extension par l'auteur pallient grandement tous les problèmes qui auraient pu être le fait des omissions dans cette liste.

4.1.3 Les concepts de base du balisage de contenu

La conception des éléments de contenu MathML obéit aux principes suivants :

Le but principal du codage du contenu est d'établir des connexions explicites entre les structures mathématiques et leurs significations. Les éléments de contenu correspondent directement aux parties de l'arbre de l'expression mathématique sous-jacente. Chaque structure a une sémantique par défaut associée et un mécanisme permet l'association de définitions mathématiques nouvelles à des structures nouvelles.

Les avantages significatifs procurés par l'introduction de balises spécifiques au contenu sont les suivants :

Les expressions décrites comme éléments de contenu doivent toujours être rendues. Pour les expressions communes, les présentations visuelles par défaut sont habituellement claires. Lewis Carroll a écrit : Occupez-vous du sens et les sons s'occuperont d'eux-mêmes [Carroll1871]. La description détaillée de chaque élément comprend une présentation par défaut (cf. la section 4.4 Les éléments de balisage du contenu).

Pour atteindre ces objectifs, le codage de contenu MathML repose sur le concept d'arbre de l'expression. L'arbre du contenu de l'expression se construit d'après un ensemble d'objets plus primitifs, désignés ici par conteneurs et opérateurs. MathML est riche d'un jeu d'objets conteneurs et opérateurs prédéfinis, ainsi que de structures pour combiner les conteneurs et les opérateurs selon un sens mathématique. La syntaxe et l'utilisation de ces éléments de contenu et de ces structures sont décrites dans la section suivante.

4.2 Le guide d'utilisation des éléments de contenu

Puisque le motif présidant au balisage du contenu MathML est le codage des expressions mathématiques, avec une structure mathématique de l'expression qui soit claire, la syntaxe et l'utilisation du balisage du contenu doivent être assez cohérentes pour faciliter une interprétation sémantique automatisée. Il ne doit pas y avoir de doute quand, par exemple, on attend l'application réelle d'une somme, d'un produit ou d'une fonction et, si présence de nombres spécifiques, les informations fournies doivent être suffisantes afin de reconstituer le nombre exact pour les besoins du calcul. Bien sûr, c'est toujours le processeur MathML conforme qui décide de ce qui doit advenir d'une telle expression basée sur un contenu, et le calcul ne représente qu'une option parmi beaucoup d'autres. Un moteur de rendu (ou un éditeur structuré) pourrait simplement utiliser les données et sa connaissance intégrée propre de la structure mathématique pour rendre l'objet. Il pourrait aussi manipuler l'objet pour construire un nouvel objet mathématique. Un système plus axé sur le calcul pourrait essayer d'effectuer l'opération indiquée ou d'évaluer sa fonction.

Le but de cette section est de décrire une utilisation cohérente attendue. Les exigences dépassent la simple satisfaction de la structure syntaxique définie par une définition DTD XML. Le non-respect d'une utilisation décrite ci-dessous entraînera une condition d'erreur MathML, même si l'expression est valide du point de vue de la syntaxe vis-à-vis de la définition DTD.

Outre les informations d'utilisation contenues dans cette section, la section 4.4 Les éléments de balisage du contenu donne la liste complète de chaque élément de contenu, en fournissant des informations de référence concernant leurs attributs, leur syntaxe, des exemples, leurs sémantiques et leurs rendus par défaut suggérés. Les règles d'utilisation d'un balisage de présentation dans un balisage de contenu sont expliquées dans la section 5.2.3 Le balisage de présentation dans un balisage de contenu. On donne une grammaire EBNF informelle décrivant la syntaxe du balisage de contenu dans l'Annexe B [La grammaire de validation du balisage de contenu].

4.2.1 Vue d'ensemble de la syntaxe et de l'utilisation

Le codage du contenu MathML repose sur le concept d'arbre de l'expression. En règle générale, les nœuds terminaux dans l'arbre représentent des objets mathématiques de base, tels que des nombres, des variables, des opérations arithmétiques, et ainsi de suite. Les nœuds internes dans l'arbre représentent généralement un type d'application de fonction ou une autre structure mathématique construisant un objet composite. L'application de fonction en fournit l'exemple le plus important : un nœud interne peut représenter l'application d'une fonction sur plusieurs arguments, eux-mêmes représentés par des nœuds terminaux en aval du nœud interne.

On peut ranger les éléments de contenu MathML dans les catégories suivantes, en fonction de leur utilisation :

Ce sont les unités élémentaires de structure qui constituent les expressions de contenu MathML. Chaque catégorie est expliquée dans une section distincte à suivre. Dans le reste de cette section, nous introduirons brièvement certains des éléments de chaque type parmi les plus courants et nous examinerons les structures générales qui permettent de les combiner selon un sens mathématique.

4.2.1.1 La construction des objets mathématiques

Les arbres d'expression de contenu se construisent à partir d'objets mathématiques de base. Au niveau le plus bas, les nœuds terminaux sont encapsulés dans des éléments non vides qui définissent leurs types. Les nombres et les symboles sont balisés par des éléments atomiques cn et ci. Les constructions plus élaborées, tels que les ensembles, les vecteurs et les matrices, se balisent aussi avec des éléments qui indiquent leurs types mais, au lieu de contenir directement des données, ces éléments conteneurs sont construits avec d'autres éléments. Les éléments servent dans l'ordre à identifier clairement les objets sous-jacents. On peut ainsi se servir d'une analyse XML normalisée pour définir les propriétés globales des objets.

Les conteneurs <cn>12345</cn> , <ci>x</ci> et <csymbol definitionURL="mySymbol.htm" encoding="text">S</csymbol> représentent un nombre mathématique, un identificateur et un symboles défini extérieurement. Plus loin, nous verrons les éléments opérateurs, tels que plus ou sin, qui offrent un accès aux opérations et aux fonctions mathématiques de base applicables à ces objets. D'autres conteneurs, tels que set pour les ensembles et matrix pour les matrices, permettent de représenter divers objets composites communs.

Par exemple, le nombre 12345 se code ainsi :

<cn>12345</cn>

Les attributs et le contenu de type PCDATA fournissent ensemble les données nécessaires à une application pour l'analyse du nombre. Par exemple, on suppose un nombre en base 10 par défaut, mais pour indiquer des données sous-jacentes écrites en fait en base 8, il suffit de donner la valeur "8" à l'attribut base :

<cn base="8">12345</cn>

Et on peut coder le nombre complexe 3 + 4i par :

<cn type="complex-cartesian">3<sep/>4</cn>

Ces informations permettent à une autre application d'analyser aisément ces expressions pour obtenir le nombre exact.

En autre exemple, on code le symbole scalaire v ainsi :

<ci>v</ci>

Par défaut, les éléments ci représentent les élément d'un champ commutatif (cf. l'Annexe C [Les définitions des éléments de contenu]). Si on attend un vecteur, on peut alors le coder comme ceci :

<ci type="vector">v</ci>

On invoque la sémantique par défaut associée à l'élément vector, à savoir un élément arbitraire d'un espace vectoriel de dimension finie.

En utilisant les éléments ci et csymbol, nous avons indiqué clairement que l'on se référait à un identificateur ou un symbole mathématiques, mais cela ne dit rien sur la manière de les rendre. Par défaut, un symbole est rendu comme si l'élément ci (ou l'élément csymbol) était en réalité l'élément de présentation mi (cf. la section 3.2.3 Les identificateurs (mi)). Le rendu réel d'un symbole mathématique peut être aussi élaboré que nécessaire en utilisant simplement des structures de présentation plus élaborées (comme décrit dans le chapitre 3 Le balisage de présentation) dans le corps de l'élément ci (ou de l'élément csymbol).

Le rendu par défaut d'un objet simple balisé avec l'élément cn est le même que celui de l'élément de présentation mn avec une certaine latitude pour forcer la présentation de la valeur de type PCDATA en fournissant des balises mn explicites. Cela est précisé dans la section 4.4 Les éléments de balisage du contenu.

Les problèmes concernant les objets composites, tels que les ensembles, les vecteurs et les matrices, sont tous similaires à ceux décrits précédemment pour les nombres et les symboles. Chacun de ces objets a des propriétés globales en tant qu'objet mathématique influant sur la façon dont on doit l'analyser. Tout peut être affecté, que ce soit l'interprétation des opérations qui lui sont appliquées jusqu'à la manière de rendre les symboles qui le représentent. Ces propriétés mathématiques se fixent en réglant les valeurs des attributs.

4.2.1.2 La construction des expressions générales

La notion de construction d'un arbre général de l'expression est essentiellement celle d'appliquer un opérateur à des sous-objets. Par exemple, on peut assimiler la somme a + b à l'application de l'opérateur addition aux deux arguments a et b. Dans MathML, on utilise les éléments comme des opérateurs en grande partie pour la même raison que l'on se sert d'éléments pour contenir des objets. Ils sont reconnus au niveau de l'analyse XML et leurs attributs peuvent servir pour enregistrer ou modifier la sémantique attendue. Par exemple, avec l'élément MathML plus, la définition des attributs definitionURL et encoding suivante :

<plus definitionURL="www.example.com/VectorCalculus.htm"
      encoding="text"/>

Celle-ci peut indiquer que l'opération attendue se base sur un vecteur.

Il existe aussi une autre raison de se servir d'éléments pour dénoter des opérateurs. Il y a une distinction sémantique cruciale entre la fonction en question et l'expression résultant de l'application de cette fonction sur zéro à plusieurs arguments qui doivent être saisis. On réalise cela en fabriquant les fonctions comme des objets auto-contenus avec leurs propriétés propres et en fournissant une structure apply explicite correspondant à l'application de la fonction. Nous étudierons la structure apply dans la section suivante.

MathML possède beaucoup d'éléments opérateurs prédéfinis couvrant une gamme de sujets mathématiques. Toutefois, une classe d'expressions importante implique des fonctions et des symboles inconnus, ou bien définis par l'utilisateur. Pour ces situations, MathML fournit un élément csymbol général abordé plus loin.

4.2.1.3 La structure apply

Le moyen le plus essentiel d'assembler une expression mathématique dans le balisage de contenu MathML est la structure apply. L'élément apply applique typiquement un opérateur à ses arguments. Il correspond à une expression mathématique complète. Approximativement parlant, cela veut dire un bout de mathématiques qui ne changerait pas de signification s'il était entouré par des parenthèses ou des crochets logiques.

Par exemple, on pourrait coder l'expression (x + y) par :

<apply>
  <plus/>
  <ci> x </ci>
  <ci> y </ci>
</apply>

Les balises ouvrante et fermante de l'élément apply définissent exactement la portée d'un opérateur ou d'une fonction. La manière la plus habituelle d'utiliser apply est simple et récursive. Symboliquement, on peut décrire le modèle de contenu ainsi :

<apply> 
  op 
  a 
  b
</apply>

Où les opérandes a et b sont des conteneurs ou d'autres éléments eux-mêmes à contenu, op est un opérateur ou une fonction. Remarquez que cela permet, puisque l'élément apply est un conteneur, l'imbrication des structures apply à une profondeur arbitraire.

Un élément apply peut en principes avoir un nombre quelconque d'opérandes :

<apply> op a b [c...] <apply>

Par exemple, on peut coder l'expression (x + y + z) par :

<apply>
  <plus/>
  <ci> x </ci>
  <ci> y </ci>
  <ci> z </ci>
</apply>

Les expressions mathématiques impliquant une composition d'opérations se traduisent par une imbrication d'éléments apply. Par exemple, le codage de l'expression ax + b serait :

<apply>
  <plus/>
  <apply>
    <times/>
    <ci> a </ci>
    <ci> x </ci>
  </apply>
  <ci> b </ci>
</apply>

Il n'est pas nécessaire d'introduire des parenthèses ou de recourir aux règles de priorité des opérateurs pour analyser l'expression correctement. Les balises apply fournissent un regroupement correct pour réutiliser les expressions dans d'autres structures. Toute expression englobée par un élément apply est vue comme un seul objet cohérent.

Une expression telle que (F + G)(x) pourrait être un produit, comme ici :

<apply>
  <times/>
  <apply>
    <plus/>
    <ci> F </ci>
    <ci> G </ci>
  </apply>
  <ci> x </ci>
</apply>

Ou elle pourrait indiquer l'application de la fonction F + G à l'argument x. On pourrait y parvenir en construisant la somme suivante :

<apply>
  <plus/>
  <ci> F </ci>
  <ci> G </ci>
</apply>

Qu'on appliquerait à l'argument x ainsi :

<apply>
  <apply>
    <plus/>
    <ci> F </ci>
    <ci> G </ci>
    </apply>
  <ci> x </ci>
</apply>

La fonction et les arguments peuvent être des identificateurs simples ou bien des expressions plus compliquées.

Dans MathML 1.0, il y avait une autre structure dont l'utilisation est très proche de celle de l'élément apply, avec des opérateurs et des arguments : l'élément reln. L'élément reln servait à indiquer l'existence d'une relation mathématique entre ses arguments, ce qui est à l'opposé de l'application d'un opérateur. Ainsi, le balisage de l'expression x < y dans MathML 1.0 était le suivant :

<reln>
  <lt/>
  <ci> x </ci>
  <ci> y </ci>
</reln>

Dans MathML 2.0, la structure apply s'utilise avec tous les opérateurs y compris les opérateurs logiques. En MathML 2.0, l'expression précédente devient :

<apply>
  <lt/>
  <ci> x </ci>
  <ci> y </ci>
</apply>

L'utilisation de l'élément reln avec des opérateurs de relation est conservée pour des raisons de rétrocompatibilité, mais elle est déconseillée. Nous encourageons les auteurs de nouveaux contenus à utiliser apply dans tous les cas.

4.2.1.4 Les fonctions et les opérateurs définis explicitement

Les opérations et fonctions les plus courantes telles que plus et sin sont prédéfinies explicitement comme des éléments vides (cf. la section 4.4 Les éléments de balisage du contenu). Elles ont les attributs type et definitionURL et l'auteur peut, en les changeant, enregistrer qu'un autre type d'opération arithmétique est attendu. Cela permet essentiellement de réutiliser la même notation dans une discussion déplacée dans un domaine algébrique différent.

En raison de leur nature, la notation des mathématiques doit être extensible. La clé de l'extensibilité est la capacité de l'utilisateur à définir des fonctions nouvelles et d'autres symboles pour augmenter le champs du discours mathématique.

Il est toujours possible de créer des expressions arbitraires puis de s'en servir comme symboles dans le langage. On peut alors inférer directement leurs propriétés de cet usage comme on l'a fait dans la section précédente. Toutefois, cette approche empêcherait de coder le fait que la structure était un symbole connu, ou de consigner ses propriétés mathématiques sauf à les utiliser réellement. L'élément csymbol sert de conteneur pour construire un nouveau symbole, un peu comme on utilise l'élément ci pour construire un identificateur. (Remarquez que le terme symbole est employé ici dans un sens abstrait et n'a aucun rapport avec une présentation quelconque de la structure à l'écran ou sur le papier). La différence d'utilisation tient au fait que l'élément csymbol devrait désigner un certain concept établi mathématiquement par une définition externe appelée via l'attribut definitionURL, tandis que l'élément ci sert pour les identificateurs, qui sont essentiellement locaux à l'expression MathML et qui n'utilisent pas de mécanisme de définition externe. La cible de l'attribut definitionURL sur l'élément csymbol peut coder la définition dans un format quelconque ; l'attribut encoding indique le codage particulier utilisé.

Par exemple, afin de décrire une fonction entièrement nouvelle avec l'élément csymbol, on écrit :

<csymbol definitionURL="www.example.com/VectorCalculus.htm"
         encoding="text">
  Christoffel
</csymbol>

L'attribut definitionURL donne une adresse URI fournissant une définition écrite du symbole Christoffel. Les définitions par défaut suggérées pour les éléments de contenu MathML, dans l'Annexe C [Les définitions des éléments de contenu], apparaissent dans un format basé sur OpenMath, quoique rien n'oblige à utiliser un format particulier. Le rôle de l'attribut definitionURL est très similaire au rôle des définitions incluses au début de beaucoup de publications mathématiques, qui souvent se rapporte juste à une définition utilisée par un livre particulier.

MathML 1.0 reconnaissait l'élément fn servant à coder le fait d'utiliser une structure comme une fonction ou un opérateur. Pour consigner l'utilisation sémantique de l'expression F + G comme fonction, on la codait ainsi :

<fn>
  <apply>
    <plus/>
    <ci>F</ci>
    <ci>G</ci>
  </apply>
</fn>

Même si elle est admise dans MathML 2.0 pour des raisons de rétrocompatibilité, cette utilisation est maintenant déconseillée. La position d'une structure comme premier sous-élément de apply l'établit clairement comme opérateur. S'il faut apporter d'autres informations à la structure, on devrait les envelopper dans un élément semantics, par exemple, comme ceci :

<semantics definitionURL="www.example.com/vectorfuncs/plus.htm"
           encoding="Mathematica">
  <apply>
    <plus/>
    <ci>F</ci>
    <ci>G</ci>
  </apply>
</semantics>

MathML 1.0 reconnaissait l'utilisation de l'attribut definitionURL avec l'élément fn pour désigner les définitions externes des fonctions définies par l'utilisateur. Même si elle est admise pour des raisons de rétrocompatibilité, cette utilisation est déconseillée dans MathML 2.0 en faveur de l'élément csymbol pour définir la fonction, l'élément apply servant ensuite à la relier à ses arguments. Par exemple :

  <apply>
    <csymbol definitionURL="http://www.example.org/function_spaces.html#my_def"
             encoding="text">
      BigK
    </csymbol>
    <ci>x</ci>
    <ci>y</ci>
  </apply>

4.2.1.5 La structure inverse

Les fonctions données, il y a naturellement les fonctions symétriques. C'est l'élément inverse qui s'en charge.

Les fonctions symétriques peuvent être problématiques d'un point de vue mathématique, dans la mesure où intervient implicitement la définition du symétrique d'une fonction arbitraire F. Même dans les niveaux scolaires secondaires, le concept de fonction symétrique F-1 de beaucoup de fonctions communes F n'est pas employé de manière uniforme. Par exemple, les définitions utilisées pour les fonctions trigonométriques symétriques peuvent différer légèrement selon l'ensemble et/ou la branche choisis.

MathML adopte la vue suivante : si F est une fonction de l'ensemble D vers l'ensemble D', alors G la fonction symétrique de F est une fonction de l'ensemble D', telle que G(F(x)) = x, x appartenant à D. Cette définition n'affirme pas qu'une telle fonction symétrique existe à chaque fois, ou en effet pour tout x dans D, ou qu'elle n'admette qu'une seule valeur en tout point. Également, selon les fonctions concernées, d'autres propriétés, telle que F(G(y)) = y, y appartenant à D', peuvent être vérifiées.

On applique l'élément inverse à une fonction chaque fois qu'une fonction symétrique est nécessaire. Par exemple, on code l'application de la fonction sinus symétrique sur x, c.à.d. sin-1(x), par :

<apply>
  <apply> <inverse/> <sin/> </apply>
  <ci> x </ci>
</apply>

Bien que l'élément arcsin soit une fonction prédéfinie de MathML, il peut se trouver une référence explicite sin-1(x) dans un document discutant des définitions possibles de arcsin.

4.2.1.6 La structure declare

Supposons un document discutant des vecteurs A = (abc) et B = (def), contenant plus loin l'expression V = A + B. Où que A et B apparaissent, il importe de pouvoir indiquer qu'ils représentent des vecteurs particuliers. Les propriétés de ces vecteurs peuvent déterminer l'aspect des opérateurs tel que plus.

On peut simplement indiquer la nature de vecteur de A avec le balisage suivant :

<ci type="vector">A</ci>

Mais cela ne dit pas, par exemple, quel vecteur est impliqué ni quelles sont ses coordonnées.

La structure declare sert à associer des propriétés ou des significations particulières à un objet. La déclaration réelle proprement dite n'a pas de rendu visuel (ou dans une autre forme). Par contre, elle influence indirectement la sémantique de toutes les utilisations affectées de l'objet déclaré.

Les déclarations doivent apparaître au début d'un élément math. La portée de la déclaration est l'élément math entier dans lequel elle est faite. L'attribut scope d'un élément declare peut être inclus mais il est sans effet, puisque les deux valeurs possibles "local" et "global" ont alors la même signification. La valeur d'attribut "global" est encore admise pour rétrocompatibilité avec MathML 1.0, mais elle est déconseillée dans MathML 2.0.

Les utilisations de l'élément declare s'étendent de la réinitialisation des valeurs d'attribut par défaut jusqu'à l'association d'une expression à une instance particulière d'une structure plus élaborée. Les utilisations successives de l'expression initiale (dans la portée de l'élément declare) jouent le même rôle sémantique que celui de l'objet accouplé.

Par exemple, cette déclaration :

<declare>
  <ci> A </ci>
  <vector>
    <ci> a </ci>
    <ci> b </ci>
    <ci> c </ci>
  </vector>
</declare>

Elle indique que A représente le vecteur particulier (abc), et donc que ses utilisations suivantes, comme dans V = A + B, peuvent en tenir compte. Lorsqu'on utilise l'élément declare de cette façon, le codage réel suivant :

<apply>
  <eq/>
  <ci> V </ci>
  <apply>
    <plus/>
    <ci> A </ci>
    <ci> B </ci>
  </apply>
</apply>

Celui-ci reste inchangé mais l'expression peut être interprétée comme une addition de vecteurs.

La déclaration d'une expression pour représenter un objet spécifique n'est pas obligatoire. Par exemple, cette déclaration :

<declare type="vector">
  <ci> A </ci>
</declare>

Elle annonce que A est un vecteur, sans indiquer le nombre des composants ou les valeurs des composants particuliers. Les valeurs possibles de l'attribut type comprennent tous les noms des éléments conteneurs prédéfinis, tels que vector, matrix ou set (cf. la section 4.3.2.9 type).

4.2.1.7 La structure lambda

Le lambda calcul permet à un utilisateur de construire une fonction à partir d'une variable et d'une expression. Par exemple, la structure lambda sous-tend la locution mathématique commune illustrée ici :

Soit f la fonction qui à x associe x2 + 2

On peut trouver diverses notations de ce concept dans les ouvrages mathématiques, telles que \lambda(xF(x)) = F ou \lambda(x, [F]) = F, où x est une variable libre dans F.

Ce concept est mis en œuvre dans MathML au moyen de l'élément lambda. Une structure lambda avec n variables internes est codée par un élément lambda avec n+1 sous-éléments. Tous sauf le dernier doivent être des éléments bvar qui sont les identificateurs des variables internes. Le dernier sous-élément est une expression définissant la fonction. Il s'agit typiquement d'un élément apply mais ça peut aussi être un élément conteneur quelconque.

L'expression \lambda (x, sin(x+1)) se construit ainsi :

<lambda>
  <bvar><ci> x </ci></bvar>
  <apply>
    <sin/>
    <apply>
      <plus/>
      <ci> x </ci>
      <cn> 1 </cn>
    </apply>
  </apply>
</lambda>

Pour utiliser les éléments declare et lambda afin de construire la fonction f telle que f(x) = x2 + x + 3, faites :

<declare type="fn">
  <ci> f </ci>
  <lambda>
    <bvar><ci> x </ci></bvar>
    <apply>
      <plus/>
      <apply>
        <power/>
        <ci> x </ci>
        <cn> 2 </cn>
      </apply>
      <ci> x </ci>
      <cn> 3 </cn>
    </apply>
  </lambda>
</declare>

Le balisage suivant déclare et construit la fonction J, telle que J(xy) est l'intégrale de x à y de t4 par rapport à t :

<declare type="fn">
  <ci> J </ci>
  <lambda>
    <bvar><ci> x </ci></bvar>
    <bvar><ci> y </ci></bvar>
    <apply> <int/>
      <bvar>
        <ci> t </ci>
      </bvar>
      <lowlimit>
        <ci> x </ci>
      </lowlimit>
      <uplimit>
        <ci> y </ci>
      </uplimit>
      <apply>   <power/>
        <ci>t</ci>
        <cn>4</cn>
      </apply>
    </apply>
  </lambda>
</declare>

La fonction J peut alors s'appliquer à son tour à un couple d'arguments.

4.2.1.8 L'utilisation des éléments qualificatifs et la structure condition

Le dernier exemple de la section précédente illustre l'utilisation des éléments qualificatifs lowlimit, uplimit et bvar, utilisés en conjonction avec l'élément int. Un certain nombre de structures mathématiques communes font intervenir des données supplémentaires soit implicites dans la notation conventionnelle, telle qu'une variable liée, soit considérées faire partie de l'opérateur au lieu d'un argument, comme c'est le cas pour les limites d'une intégrale définie.

Le balisage du contenu utilise les éléments qualificatifs en conjonction avec un certain nombre d'opérateurs, y compris les intégrales, les sommes, les séries et certains opérateurs différentiels. Les éléments qualificatifs apparaissent dans le même élément apply avec l'un de ces opérateurs. En général, ils doivent advenir dans un certain ordre et leur signification précise dépend des opérateurs employés. Pour des précisions, cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

L'élément qualificatif bvar s'utilise aussi dans une autre structure MathML importante. L'élément condition sert à exercer des conditions sur des variables liées dans d'autres expressions. Par exemple, cela permet au langage MathML de définir un ensemble par une règle plutôt que par énumération. Le balisage suivant code l'ensemble {x | x < 1} :

<set>
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply>
      <lt/>
      <ci> x </ci>
      <cn> 1 </cn>
    </apply>
  </condition>
</set>

4.2.1.9 Le rendu des éléments de contenu

Bien que le rôle principal du jeu des éléments de contenu MathML soit de coder directement la structure mathématique des expressions, indépendamment de la notation employée pour présenter les objets, on ne peut pas ignorer les problèmes de rendu. Chaque élément de contenu a un rendu par défaut, indiqué dans la section 4.4 Les éléments de balisage du contenu, et plusieurs mécanismes (y compris ceux dans la section 4.3.3.2 Les attributs généraux) sont fournis afin d'associer un rendu particulier à un objet.

4.2.2 Les conteneurs

Les conteneurs fournissent les moyens permettant de construire des objets mathématiques d'un type donné.

Atomes ci, cn, csymbol
Constructeurs interval, list, matrix, matrixrow, set, vector, apply, reln, fn, lambda, piecewise, piece, otherwise
Structure spéciale declare

4.2.2.1 Les atomes

Les éléments atomiques sont typiquements les nœuds terminaux de l'arbre de l'expression MathML. On les utilise pour définir des identificateurs, des nombres et des symboles mathématiques.

Les éléments canoniquement vides, tels que exp, sin et cos, peuvent également être des nœuds terminaux dans l'arbre d'une expression. L'utilisation des éléments opérateurs est décrite dans la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs.

cn
L'élément cn est l'élément atomique MathML servant à représenter des nombres. Les types de nombres reconnus comprennent : "real", "integer", "rational", "complex-cartesian" et "complex-polar", le type par défaut valant "real". On utilise un attribut base (dont la valeur par défaut est 10) pour indiquer comment le contenu doit être analysé. Le contenu en question est essentiellement une valeur de type PCDATA, et l'élément <sep/> définit une séparation lorsque deux parties sont nécessaires pour décrire entièrement un nombre. Par exemple, le nombre réel 3 est construit par <cn type="real"> 3 </cn>, tandis que le nombre rationnel 3/4 est construit par <cn type="rational"> 3<sep/>4 </cn>. Le détail de la structure et des définitions est donné dans la section 4.4.1.1 Les nombres (cn).
ci
L'élément ci (N.d.T. content identifier) sert à construire une variable ou un identificateur. Un attribut type indique le type de l'objet représenté par le symbole. Typiquement, l'élément ci représente un réel scalaire, mais aucune valeur par défaut n'est définie. Le contenu est soit une valeur de type PCDATA, soit une structure de présentation générale (cf. la section 3.1.6 Le sommaire des éléments de présentation). Par exemple :
<ci>
<msub>
  <mi>c</mi>
  <mn>1</mn>
</msub>
</ci>
Ce code représente un symbole atomique de rendu visuel c1 qui est traité, en tant que contenu, comme un seul symbole représentant un nombre réel. Le détail de la structure et des définitions est donné dans la section 4.4.1.2 Les identificateurs (ci).
csymbol
L'élément csymbol (N.d.T. content symbol) sert à construire un symbole dont la sémantique n'est pas définie dans le cœur des éléments de contenu fournis par MathML mais à l'extérieur. L'élément csymbol n'essaie pas de décrire comment s'appliquent les arguments intervenant dans une application de la fonction en une nouvelle expression MathML. C'est plutôt à son attribut definitionURL de pointer vers une signification particulière, et à son attribut encoding de donner la syntaxe de cette définition. Le contenu d'un élément csymbol est soit une valeur de type PCDATA, soit une structure de présentation générale (cf. la section 3.1.6 Le sommaire des éléments de présentation). Par exemple :
<csymbol definitionURL="www.example.com/ContDiffFuncs.htm"
         encoding="text">
<msup>
  <mi>C</mi>
  <mn>2</mn>
</msup>
</csymbol>
Ce code représente un symbole atomique de rendu visuel C2 qui est traité, en tant que contenu, comme un seul symbole représentant l'espace des fonctions continues bi-différentiables. Le détail de la structure et des définitions est donné dans la section 4.4.1.3 Les symboles à définition externe (csymbol).

4.2.2.2 Les constructeurs

MathML fournit un certain nombre d'éléments permettant de combiner des éléments dans des objets composés familiers. Les objets composés comprennent entre autres les listes et les ensembles. Chaque constructeur produit un nouveau type d'objet.

interval
L'élément interval est décrit en détails dans la section 4.4.2.4 Les intervalles (interval). Il indique un intervalle dans l'ensemble des réels, les valeurs de ses sous-éléments en représentant les points limites. On utilise l'attribut closure pour qualifier le type de l'intervalle représenté. Par exemple :
<interval closure="open-closed">
  <ci> a </ci>
  <ci> b </ci>
</interval>
C'est un intervalle ouvert-fermé qu'on écrit habituellement (ab].
set et list
Les éléments set et list sont décrits en détails dans la section 4.4.6.1 Les ensembles (set) et la section 4.4.6.2 Les listes (list). Typiquement, les sous-éléments de list (éventuellement vide) sont les composants effectifs d'une liste ordonnée. Par exemple, on code la liste ordonnée des trois symboles a, b et c par :
<list> <ci> a </ci> <ci> b </ci> <ci> c </ci> </list>
Sinon on peut utiliser les éléments bvar et condition pour définir les listes, et en font partie les éléments qui satisfont à certaines conditions. On peut utiliser l'attribut order pour indiquer l'ordre à utiliser. Lorsque la nature des sous-éléments le permet, l'ordre par défaut est numérique ou lexicographique. Les ensembles sont structurés presque de la même façon que les listes, hormis l'absence d'ordre implicite et les valeurs de l'attribut type qui peuvent être "normal" ou "multiset", la valeur "multiset" autorisant les répétitions. Pour les ensembles comme pour les listes, leurs sous-éléments doivent être des éléments de contenu MathML valides. Le type des sous-éléments n'est pas restreint. Par exemple, on pourrait construire une liste d'équations ou d'inégalités.
matrix et matrixrow
L'élément matrix sert à représenter une matrice mathématique. Cela est décrit en détails dans la section 4.4.10.2 Les matrices (matrix). Il peut y avoir zéro à plusieurs sous-éléments tous étant des éléments matrixrow. Ceux-ci admettent, à leur tour, zéro à plusieurs sous-éléments qui se réduisent à des expressions algébriques ou des nombres. Ce sont souvent des nombres réels ou des symboles comme dans :
<matrix>
  <matrixrow> <cn> 1 </cn> <cn> 2 </cn> </matrixrow>
  <matrixrow> <cn> 3 </cn> <cn> 4 </cn> </matrixrow>
</matrix>
Les éléments matrixrow doivent toujours être contenus dans une matrice et toutes les lignes d'une matrice donnée doivent avoir le même nombre d'éléments. Remarquez que le comportement des éléments matrix et matrixrow est très différent de celui des éléments de présentation mtable et mtr.
vector
L'élément vector est décrit en détails dans la section 4.4.10.1 Les vecteurs (vector). Il construit des vecteurs dans un espace vectoriel à n dimensions de sorte que leurs n sous-éléments représentent habituellement des scalaires de valeur réelle ou complexe, comme dans le vecteur à trois éléments suivant :
<vector>
  <apply>
    <plus/>
    <ci> x </ci>
    <ci> y </ci>
  </apply>
  <cn> 3 </cn>
  <cn> 7 </cn>
</vector>
apply
L'élément apply est décrit en détails dans la section 4.4.2.1 Les applications (apply). Son but est d'appliquer une fonction ou un opérateur à ses arguments afin de produire une expression qui représente un élément de l'ensemble d'arrivée de la fonction. Il intervient partout, dans la formation des sommes telle que a + b :
<apply>
  <plus/>
  <ci> a </ci>
  <ci> b </ci>
</apply>
En passant par l'utilisation de la fonction sinus pour construire sin(a) :
<apply>
  <sin/>
  <ci> a </ci>
</apply>
Ou pour construire des intégrales. Son utilisation dans une situation particulière est largement déterminée par les propriétés de la fonction (le premier sous-élément) et, de ce fait, elle est détaillée avec les fonctions et les opérateurs dans la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs.
reln
L'élément reln est décrit en détails dans la section 4.4.2.2 Les relations (reln). Dans MathML 1.0, il servait à construire des expressions, telle que a = b :
<reln><eq/>
  <ci> a </ci>
  <ci> b </ci>
</reln>
Elle indique une comparaison attendue entre deux valeurs mathématiques. Le point de vue de MathML 2.0 est d'y voir l'application d'une fonction booléenne laquelle devrait donc se construire en utilisant l'élément apply. L'utilisation de l'élément reln avec les opérateurs logiques est admise pour des raisons de rétrocompatibilité, mais elle est déconseillée en faveur de l'élément apply.
fn
L'élément fn était utilisé dans MathML 1.0 pour rendre explicite l'utilisation d'une expression comme une fonction ou un opérateur. MathML 2.0 admet cette utilisation pour des raisons de rétrocompatibilité, mais elle est déconseillé, car la nature de fonction ou d'opérateur d'une expression se détermine clairement de sa position de premier sous-élément de apply. L'élément fn est abordé en détails dans la Section 4.4.2.3 [Les fonctions (fn)].
lambda
L'élément lambda sert à construire une fonction définie par l'utilisateur à partir d'une expression et d'une ou de plusieurs variables libres. Une structure lambda à n variables internes admet n+1 sous-éléments. Le premier (puis le deuxième jusqu'au nème) est un élément bvar contenant les identificateurs des variables internes. Le dernier est une expression définissant la fonction. C'est habituellement un élément apply, mais ça peut être aussi n'importe quel élément conteneur. Cette expression \lambda (x, sin x) est construite par :
<lambda>
  <bvar><ci> x </ci></bvar>
  <apply>
    <sin/>
    <ci> x </ci>
  </apply>
</lambda>
La fonction constante \lambda (x, 3) est construite par :
<lambda>
  <bvar><ci> x </ci></bvar>
  <cn> 3 </cn>
</lambda>
piecewise, piece, otherwise
Les éléments piecewise, piece, otherwise servent à gérer les déclarations en morceaux de la forme H(x) = 0 si x inférieur à 0, sinon H(x) = 1.
<piecewise>
  <piece>
      <cn> 0 </cn>
      <apply><lt/><ci> x </ci> <cn> 0 </cn></apply>
  </piece>
    <otherwise>
      <ci> x </ci>
    </otherwise>
</piecewise>
Les éléments piecewise sont abordés en détails dans la section 4.4.2.16 Les déclarations en morceaux (piecewise, piece, otherwise).

4.2.2.3 Les structures spéciales

La structure declare est décrite en détails dans la section 4.4.2.8 Les déclarations (declare). Elle est spéciale car sa seule utilisation est de modifier la sémantique des autres objets. Elle n'a aucun rendu visuel ni sonore.

Les déclarations sont nécessaires à chaque fois qu'on utilise un symbole (y compris les présentations plus générales) pour représenter une instance d'un objet de type particulier. Par exemple, on peut vouloir déclarer que l'identificateur symbolique V représente un vecteur. La forme à un seul argument peut servir à fixer les propriétés des objets en donnant une valeur spécifique aux attributs dont la valeur est implicite.

Ainsi, la déclaration :

<declare type="vector"><ci>V</ci></declare>

Elle réinitialise la valeur par défaut de l'attribut type de <ci>V</ci> à "vector" pour toutes les utilisations affectées de <ci>V</ci>. Cela permet d'éviter de récrire <ci type="vector">V</ci> à chaque fois que l'on utilise ce symbole.

Plus généralement, on peut utiliser l'élément declare pour associer des expressions à un contenu spécifique. Par exemple, cette déclaration :

<declare>
  <ci>F</ci>
  <lambda>
    <bvar><ci> U </ci></bvar>
    <apply>
      <int/>
      <bvar><ci> x </ci></bvar>
      <lowlimit><cn> 0 </cn></lowlimit>
      <uplimit><ci> a </ci></uplimit>
      <ci> U </ci>
    </apply>
  </lambda>
</declare>

Elle associe le symbole F à une nouvelle fonction définie par la structure lambda. Dans la portée de la déclaration, cette expression :

<apply>
  <ci>F</ci>
  <ci> U </ci>
</apply>

Elle signifie l'intégrale de U de 0 à a.

On peut aussi utiliser l'élément declare pour changer la définition d'une fonction ou d'un opérateur. Par exemple, si l'adresse URL http://.../MathML:noncommutplus décrivait une opération plus non commutative codée dans la syntaxe Maple, alors cette déclaration :

<declare definitionURL="http://.../MathML:noncommutplus"
         encoding="Maple">
  <plus/>
</declare>

Elle indique que toutes les utilisations affectées de l'élément plus devraient être interprétées selon cette définition de plus.

4.2.3 Les fonctions, les opérateurs et les qualificatifs

On peut classer les opérateurs et les fonctions définis par MathML dans les catégories du tableau suivant.

arithmétique unaire factorial, minus, abs, conjugate, arg, real, imaginary, floor, ceiling
logique unaire not
fonctionnel unaire inverse, ident, domain, codomain, image
fonctions classiques élémentaires unaires sin, cos, tan, sec, csc, cot, sinh, cosh, tanh, sech, csch, coth, arcsin, arccos, arctan, arccosh, arccot, arccoth, arccsc, arccsch, arcsec, arcsech, arcsinh, arctanh, exp, ln, log
algèbre linéaire unaire determinant, transpose
calcul unaire et calcul vectoriel divergence, grad, curl, laplacian
théorique des ensembles unaire card
arithmétique binaire quotient, divide, minus, power, rem
logique binaire implies, equivalent, approx
opérateur d'ensemble binaire setdiff
algèbre linéaire binaire vectorproduct, scalarproduct, outerproduct
arithmétique n-aire plus, times, max, min, gcd, lcm
statistique n-aire mean, sdev, variance, median, mode
logique n-aire and, or, xor
algèbre linéaire n-aire selector
opérateur d'ensemble n-aire union, intersect, cartesianproduct
fonctionnel n-aire fn, compose
opérateurs intégrale, somme, produit int, sum, product
opérateur différentiel diff, partialdiff
quantificateur forall, exists

Du point de vue de l'utilisation, MathML considère les fonctions (par exemple, sin et cos) et les opérateurs (par exemple, plus et times) de la même façon. Les fonctions et les opérateurs MathML prédéfinis sont tous des éléments canoniquement vides.

Remarquez que l'élément csymbol peut servir à construire un symbole défini par l'utilisateur pouvant être utilisé comme une fonction ou un opérateur.

4.2.3.1 Les fonctions et les opérateurs prédéfinis

Les fonctions MathML peuvent être employées de deux façons. On peut les utiliser comme opérateur au sein d'un élément apply, auquel cas elles se rapportent à une fonction évaluée sur une valeur spécifique. Par exemple :

<apply>
  <sin/>
  <cn>5</cn>
</apply>

Ce code indique un nombre réel, à savoir sin(5).

Les fonctions MathML peuvent aussi servir d'arguments pour d'autres opérateurs, par exemple :

<apply>
  <plus/><sin/><cos/>
</apply>

Ce code indique une fonction, à savoir le résultat de l'addition des fonctions sinus et cosinus dans un certain espace de fonctions. (La définition sémantique par défaut de l'élément plus lui permet d'inférer le type d'opération attendu d'après le type de ses arguments).

Le nombre des sous-éléments dans apply est déterminé par l'élément en première position (c.à.d. l'opérateur).

Les opérateurs unaires sont suivis par un autre sous-élément exactement dans l'élément apply.

Les opérateurs binaires sont suivis par deux sous-éléments exactement.

Les opérateurs n-aires sont suivis par deux sous-éléments ou plus.

Les éléments declare constituent l'exception à ces règles, ils peuvent s'insérer à n'importe quelle position sauf la première. Les éléments declare ne sont pas compris dans le compte des sous-éléments d'un élément apply contenant un élément opérateur unaire ou binaire.

Les opérateurs intégrale, somme, produit et différentiels sont abordés ci-dessous dans la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

4.2.3.2 Les opérateurs admettant des qualificatifs

Le tableau ci-dessous contient les qualificatifs et les opérateurs qui les admettent dans MathML.

qualificatifs lowlimit, uplimit, bvar, degree, logbase, interval, condition, domainofapplication, momentabout
opérateurs int, sum, product, root, diff, partialdiff, limit, log, moment, min, max, forall, exists

Les opérateurs acceptant des qualificatifs sont des fonctions canoniquement vides qui diffèrent des fonctions vides ordinaires par l'utilisation d'éléments qualificatifs spéciaux pour définir plus complètement leur signification. On les utilise exactement de la même façon que les opérateurs ordinaires, sauf que certains éléments qualificatifs sont admis à l'intérieur de l'élément apply englobant lorsqu'ils sont employées comme opérateurs. Les qualificatifs suivent toujours l'opérateur et, le cas échéant, précèdent l'argument. Si plusieurs qualificatif sont présents, leur ordre d'apparition est le suivant : bvar, lowlimit, uplimit, interval, condition, domainofapplication, degree, momentabout, logbase. Voici un exemple typique :

<apply>
  <int/>
  <bvar><ci>x</ci></bvar>
  <interval><cn>0</cn><cn>1</cn></interval>
  <apply>
      <power/>
    <ci>x</ci>
    <cn>2</cn>
  </apply>
</apply>

L'utilisation d'un schéma qualificatif avec une fonction non appliquée à un argument est également valide. Par exemple, une fonction agissant sur des fonctions intégrables dans l'intervalle [0,1] pourrait se noter :

<fn>
  <apply>
    <int/>
    <bvar><ci>x</ci></bvar>
    <lowlimit><cn>0</cn></lowlimit>
    <uplimit><cn>1</cn></uplimit>
  </apply>
</fn>

Outre l'utilisation définie dans MathML, on peut utiliser un schéma qualificatif avec n'importe quel symbole (par exemple, en utilisant l'élément csymbol) ou n'importe quelle construction définis par l'utilisateur. La signification d'une telle utilisation n'est pas définie dans MathML ; l'utilisateur l'aurait normalement établie avec un attribut definitionURL.

La signification et l'utilisation d'un schéma qualificatif varient d'une fonction à l'autre. La liste suivante résume l'utilisation des schémas qualificatifs avec les fonctions MathML admettant des qualificatifs.

int
La fonction int accepte les schémas lowlimit, uplimit, bvar, interval, condition et domainofapplication. Si les schémas lowlimit et uplimit sont tous deux présents, ils indiquent les limites d'une intégrale définie. On peut définir le domaine d'intégration autrement en utilisant les qualificatifs interval, condition ou domainofapplication. Le schéma bvar indique la variable d'intégration. Dans une utilisation avec int, chaque schéma qualificatif est censé contenir un seul sous-schéma ; sinon une erreur est générée.
diff
La fonction diff accepte le schéma bvar. Le schéma bvar définit la variable selon laquelle la dérivation a lieu. Le schéma bvar peut lui-même contenir un schéma degree servant à indiquer l'ordre de la dérivée, c'est-à-dire une dérivée première, seconde, etc. Par exemple, la dérivée seconde de f par rapport à x est :
<apply>
  <diff/>
  <bvar>
    <ci> x </ci>
    <degree>
      <cn> 2 </cn>
    </degree>
  </bvar>
  <apply><fn><ci>f</ci></fn>
    <ci> x </ci>
  </apply>
</apply>
partialdiff
La fonction partialdiff accepte zéro à plusieurs schémas bvar et un schéma qualificatif degree optionnel. Le schéma bvar définit, dans l'ordre, les variables selon lesquelles la dérivation a lieu. Chaque élément bvar peut contenir un schéma degree servant à indiquer l'ordre de la dérivation effectuée sur cette variable. Le schéma qualificatif degree optionnel, associé à l'élément partialdiff en question (c'est-à-dire, celui qui apparaît comme sous-élément de l'élément apply englobant et pas comme sous-élément de l'un des qualificatifs bvar), sert à représenter le degré total de la différentiation. Dans une utilisation avec partialdiff, chaque schéma degree est censé contenir un seul sous-schéma. Par exemple :
<apply>
  <partialdiff/>
  <bvar>
    <degree><cn>2</cn></degree>
    <ci>x</ci>
  </bvar>
  <bvar><ci>y</ci></bvar>
  <bvar><ci>x</ci></bvar>
  <degree><cn>4</cn></degree>
  <ci type="fn">f</ci>
</apply>
Ce code indique la dérivée partielle mixte ( d4 / d2x dy dx ) f.
sum, product
Les fonctions sum et product acceptent les schémas bvar, lowlimit, uplimit, interval, condition et domainofapplication. Si les schémas lowlimit et uplimit sont tous deux présents, ils indiquent les limites de la somme ou du produit. On peut définir les limites autrement en utilisant les schémas interval, condition ou domainofapplication. Le schéma bvar indique la variable interne de la somme ou du produit. Voici un exemple typique :
<apply>
  <sum/>
  <bvar><ci>i</ci></bvar>
  <lowlimit><cn>0</cn></lowlimit>
  <uplimit><cn>100</cn></uplimit>
  <apply>
    <power/>
    <ci>x</ci>
    <ci>i</ci>
  </apply>
</apply>
Dans une utilisation avec sum ou product, chaque schéma qualificatif est censé contenir un seul sous-schéma ; sinon une erreur est générée.
limit
La fonction limit accepte zéro à plusieurs schémas bvar et des schémas condition et lowlimit optionnels. On peut utiliser un schéma condition pour placer des contraintes sur bvar. Le schéma bvar définit la variable selon laquelle la limite est prise. Le schéma lowlimit indique le point limite. Dans une utilisation avec limit, les schémas bvar et lowlimit sont censés contenir un seul sous-schéma ; sinon une erreur est générée.
log
La fonction log accepte uniquement le schéma logbase. Si présent, il définit la base du logarithme. Sinon le logarithme est censé être en base 10. Dans une utilisation avec log, le schéma logbase est censé contenir un seul sous-schéma ; sinon une erreur est générée.
moment
La fonction moment accepte les schémas degree et momentabout. Si présent, le schéma degree indique l'ordre du moment. Sinon le moment est censé être le moment de premier ordre. Dans une utilisation avec moment, le schéma degree est censé contenir un seul sous-schéma ; sinon une erreur est générée. Si présent, le schéma momentabout définit le point par rapport auquel le moment est pris. Sinon le moment est censé être par rapport à zéro.
min, max
Les fonctions min et max acceptent un schéma bvar lorsqu'on effectue un minimum ou un maximum sur un ensemble de valeurs défini par un schéma condition en même temps que l'expression à évaluer sur cet ensemble. Dans MathML 1.0, l'élément bvar était optionnel quand on utilisait condition ; si un élément condition contenant une seule variable suivait un opérateur min (ou max), la variable était supposée implicitement liée, et elle était censée constituer l'expression à maximiser ou à minimiser (en l'absence d'expression). Cette utilisation est déconseillée dans MathML 2.0 en faveur de la déclaration explicite dans tous les cas de la variable liée (ou des variables) et de l'expression à maximiser ou à minimiser. On peut aussi appliquer les éléments min et max à une liste de valeurs, auquel cas aucun schéma qualificatif n'est employé. Comme exemple contenant toutes les trois utilisations, cf. la section 4.4.3.4 Le maximum et le minimum (max, min).
forall, exists
Les opérateurs quantificateurs universel forall et existentiel exists s'utilisent en conjonction avec un ou plusieurs schémas bvar pour représenter des assertions logiques simples. Il y a deux façons d'utiliser les opérateurs quantificateurs logiques. La première utilisation sert à représenter une assertion quantifiée simple. Par exemple, on représenterait la déclaration il existe x < 9 par :
<apply>
  <exists/>
  <bvar><ci> x </ci></bvar>
  <apply><lt/>
    <ci> x </ci><cn> 9 </cn>
  </apply>
</apply>
La seconde utilisation sert à représenter des implications. Les hypothèses sont données par un élément condition suivi par les variables liées. Par exemple, on représenterait la déclaration pour tout x < 9, x < 10 par :
<apply>
  <forall/>
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply><lt/>
      <ci> x </ci><cn> 9 </cn>
    </apply>
  </condition>
  <apply><lt/>
    <ci> x </ci><cn> 10 </cn>
  </apply>
</apply>
Remarquez qu'un ou plusieurs qualificatifs bvar sont obligatoires dans ces deux utilisations.

4.2.4 Les relations

relation binaire neq, equivalent, approx, factorof
relation logique binaire implies
relation d'ensemble binaire in, notin, notsubset, notprsubset
relation de série binaire tendsto
relation n-aire eq, leq, lt, geq, gt
relation d'ensemble n-aire subset, prsubset

Les balises de contenu MathML comprennent un certain nombre d'éléments canoniques vides qui indiquent des relations arithmétiques et logiques. Les relations sont caractérisées par le fait que, si une application externe devait les évaluer (MathML ne définit pas comment évaluer les expressions), elles renverraient typiquement une valeur de vérité. Par contraste, les opérateurs renvoient généralement une valeur de même type que les opérandes. Par exemple, le résultat de l'évaluation de a < b est soit vrai, soit faux (par constraste, 1 + 2 est encore un nombre).

On associe les relations à leurs arguments en utilisant l'élément apply de la même façon que pour les autres fonctions. Dans MathML 1.0, les opérateurs de relation étaient associés en utilisant un élément reln. Cette utilisation quoique toujours admise est maintenant déconseillé en faveur de l'élément apply. Le premier sous-élément de apply est l'opérateur de relation. Ainsi, on balise correctement l'exemple du paragraphe précédent par :

<apply>
  <lt/>
  <ci>a</ci>
  <ci>b</ci>
</apply>

Une relation englobée dans un autre élément que apply ou reln constitue une erreur.

Le nombre des sous-éléments de apply est défini par l'élément en première position (c.à.d., la relation).

Les relations unaires sont suivies par un autre sous-élément exactement dans l'élément apply.

Les relations binaires sont suivies par deux sous-éléments exactement.

Les relations n-aires sont suivies par zéro à plusieurs sous-éléments.

Les éléments declare constituent l'exception à ces règles, ils peuvent s'insérer à n'importe quelle position sauf la première. Les éléments declare ne sont pas compris dans le compte des sous-éléments d'un élément apply contenant un opérateur unaire ou binaire.

4.2.5 Les conditions

condition condition

L'élément condition sert à définir la structure tel que dans les expressions mathématiques. Les éléments condition servent dans un certain nombre de contextes dans MathML. On les utilise pour construire des objets comme des ensembles et des listes d'après une règle au lieu d'une énumération. On peut les utiliser avec les opérateurs forall et exists pour former des expressions logiques. Et enfin, on peut les utiliser de plusieurs façons en conjonction avec certains opérateurs. Par exemple, on peut les utiliser pour définir les domaines d'intégration avec l'élément int, ou pour définir les listes d'arguments des opérateurs comme min et max.

L'élément condition accompagne toujours un ou plusieurs éléments bvar.

L'interprétation exacte dépend du contexte mais, généralement parlant, l'élément condition sert à restreindre les valeurs admissibles d'une variable liée, qui apparaît dans une autre expression, aux valeurs satisfaisant aux relations qu'il contient. De la même façon, lorsque l'élément condition contient un élément set, les valeurs des variables liées se restreignent à l'ensemble ainsi désigné.

Un élément condition contient un seul élément, soit un élément apply, soit un élément reln (déconseillé). On construit des conditions composées en appliquant des relations, telle que and, au sein du sous-élément de condition.

4.2.5.1 Exemples

L'expression il existe x tel que x5 < 3 se code ainsi :

<apply>
  <exists/>
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply><lt/>
      <apply>
        <power/>
        <ci>x</ci>
        <cn>5</cn>
      </apply>
      <cn>3</cn>
    </apply>
  </condition>
</apply>

Dans l'exemple suivant, on code l'expression pour tout x dans N il existe les nombres premiers pq tels que p+q = 2x :

<apply>
  <forall/>
  <bvar><ci>x</ci></bvar>
  <condition>
    <apply><in/>
          <ci>x</ci>
          <csymbol encoding="OpenMath" 
            definitionURL="http://www.openmath.org/cd/setname1.ocd">
            N
          </csymbol>
        </apply>
  </condition>

  <apply><exists/>
     <bvar><ci>p</ci></bvar>
     <bvar><ci>q</ci></bvar>
     <condition>
       <apply><and/>
          <apply><in/><ci>p</ci>
            <csymbol encoding="OpenMath" 
              definitionURL="http://www.openmath.org/cd/setname1.ocd">
             P
            </csymbol>
          </apply>
          <apply><in/><ci>q</ci>
            <csymbol encoding="OpenMath" 
              definitionURL="http://www.openmath.org/cd/setname1.ocd">
              P
            </csymbol>
          </apply>
          <apply><eq/>
              <apply><plus/><ci>p</ci><ci>q</ci></apply>
              <apply><times/><cn>2</cn><ci>x</ci></apply>
          </apply>
        </apply>
      </condition>
  </apply>
</apply>

Ce troisième exemple montre l'utilisation de qualificatifs avec l'élément condition. Le balisage suivant code l'expression il existe x < 3 tel que x2 = 4 :

<apply>
  <exists/>
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply><lt/><ci>x</ci><cn>3</cn></apply>
  </condition>
  <apply>
    <eq/>
    <apply>
      <power/><ci>x</ci><cn>2</cn>
    </apply>
    <cn>4</cn>
  </apply>
</apply>

4.2.6 La syntaxe et la sémantique

mappages semantics, annotation, annotation-xml

L'emploi pour les mathématiques d'un balisage de contenu plutôt que d'un balisage de présentation est parfois désigné par le terme de balisage sémantique [Buswell1996]. L'arbre d'analyse de la structure d'un élément valide en se servant des éléments de contenu MathML correspond directement à l'arbre de l'expression mathématique sous-jacente. De ce fait, nous voyons le balisage du contenu en question comme un codage de la syntaxe de l'expression mathématique. En général, cela suffit pour obtenir un rendu et même une manipulation symbolique (par exemple, une factorisation polynomiale).

Toutefois, même dans des expressions apparemment simples comme X + Y, d'autres informations seront peut-être nécessaires aux applications comme celles provenant d'un calcul algébrique. Les symboles X et Y sont-ils des entiers, ou des fonctions, etc. ? Dans quel domaine l'opérateur plus représente-t-il une addition ? On appelle mappage sémantique ces informations supplémentaires. Dans MathML, ce mappage est le fait des éléments semantics, annotation et annotation-xml.

L'élément semantics est l'élément conteneur de l'expression MathML avec ses mappages sémantiques. L'élément semantics admet un nombre variable de sous-éléments. Le premier est l'élément (qui peut être une structure d'élément complexe) pour lequel ces informations sémantiques supplémentaire sont définies. Le deuxième et, le cas échéant, les suivants sont des instances d'éléments annotation et/ou annotation-xml.

L'élément semantics accepte aussi les attributs definitionURL et encoding à utiliser par des applications de traitement externes. Par exemple, une utilisation serait celle d'une adresse URI pointant sur un dictionnaire de contenu sémantique. Dans la mesure où l'attribut definitionURL est susceptible parfois de fournir les informations de mappage sémantique, les éléments annotation ou annotation-xml sont optionnels.

L'élément annotation est un conteneur de données arbitraires. Ces donnés peuvent prendre la forme d'un texte, de codages d'algèbre automatique, d'un programme en C, ou quelle que soit la forme attendue par une application de traitement. L'attribut encoding de l'élément annotation définit la forme utilisée. Remarquez que le modèle de contenu de l'élément annotation admet des valeurs de type PCDATA, et il faut donc faire attention que le codage en question n'entre pas en conflit avec les règles d'analyse XML.

L'élément annotation-xml est un conteneur d'informations sémantiques en XML bien formé. Par exemple, on pourrait donner une forme XML de la sémantique OpenMath. Une autre utilisation possible ici serait, par exemple, d'imbriquer le format à balises de présentation d'une construction donnée dans un format à balises de contenu (ou vice versa) dans le premier sous-élément semantics. L'attribut encoding de l'élément annotation-xml définit la forme utilisée.

Par exemple :

<semantics>
  <apply>
  <divide/>
    <cn>123</cn>
    <cn>456</cn>
  </apply>
  <annotation encoding="Mathematica">
    N[123/456, 39]
  </annotation>
  <annotation encoding="TeX">
    $0.269736842105263157894736842105263157894\ldots$
  </annotation>
  <annotation encoding="Maple">
    evalf(123/456, 39);
  </annotation>
  <annotation-xml encoding="MathML-Presentation">
    <mrow>
      <mn> 0.269736842105263157894 </mn>
      <mover accent='true'>
        <mn> 736842105263157894 </mn>
        <mo> &OverBar; </mo>
      </mover>
    </mrow>
  </annotation-xml>
  <annotation-xml encoding="OpenMath">
    <OMA xmlns="http://www.openmath.org/OpenMath">
	  <OMS cd="arith1" name="divide"/>
	  <OMI>123</OMI>
	  <OMI>456</OMI>
    </OMA>
  </annotation-xml>
</semantics>

Dans cette expression, l'élément OMA définit les informations sémantiques supplémentaires.

La fourniture d'un mappage sémantique explicite est bien sûr optionnelle et, en général, elle devrait seulement intervenir quand il y a lieu de traiter ou de manipuler les mathématiques sous-jacentes.

4.2.7 Les mappages sémantiques

Quoique divers codages propriétaires ou très spécialisés puissent aisément fournir des mappages sémantiques, il n'existe aucun standard non spécialisé de mappage sémantique largement répandu. Afin de répondre en partie à ce besoin, l'effort OpenMath vise à offrir une norme, indépendante vis-à-vis d'un fournisseur et d'une plateforme, permettant l'échange d'objets mathématiques entre des applications. Ces objets mathématiques contiennent des informations de mappage sémantique. Le groupe OpenMath a défini une syntaxe XML pour coder ces informations [OpenMath2000]. Ce jeu d'éléments pourrait constituer la base d'un jeu d'éléments annotation-xml.

Un aspect attractif de ce mécanisme tient au fait que la syntaxe OpenMath est spécifiée en XML, de sorte qu'on peut valider une expression MathML comme ses annotations sémantiques en utilisant des processeurs XML.

4.2.8 Les constantes et les symboles

MathML fournit un ensemble de constantes et de symboles prédéfinis représentant des concepts mathématiques rencontrés fréquemment en milieu scolaire. On y trouve les symboles d'ensembles bien connus, tels que celui des entiers (integers) et celui des rationnels (rationals), et aussi les symboles de constantes très répandues, tels que false, true et exponentiale.

4.2.9 Les types des éléments MathML

Les fonctions, les opérateurs et les relations MathML peuvent tous être assimilés à des fonctions mathématiques quand on les regarde avec suffisamment d'abstraction. Par exemple, on peut voir l'opérateur d'addition standard comme une fonction qui fait correspondre un couple de nombres réels à un nombre réel. De même, on peut voir une relation comme une fonction d'un certain espace de couples ordonnés à l'ensemble de valeurs {truefalse}. Pour avoir une signification mathématique, le domaine et l'ensemble d'arrivée d'une fonction doivent être définis exactement. En pratique, cela veut dire que les fonctions n'ont de sens que si on les applique à certains types d'opérandes. Par exemple, pour l'opérateur d'addition standard, ajouter un ensemble à une fonction ne veut rien dire. Puisque le balisage de contenu MathML cherche à coder les expressions mathématique pour les évaluer sans ambiguïté, il n'est pas surprenant que la question du type des opérandes soit importante.

MathML définit le type des arguments de deux façons. La première consiste à fournir des instructions précises aux applications de traitement sur le type des arguments attendus par les éléments de contenu MathML représentant des fonctions, des opérateurs et des relations. Ces types d'opérandes sont définis dans un dictionnaire des mappages sémantiques par défaut pour les éléments de contenu, cf. l'Annexe C [Les définitions des éléments de contenu]. Par exemple, le dictionnaire de contenu MathML indique que, pour les arguments scalaires réels, l'opérateur plus correspond à l'opérateur d'addition commutative standard sur un champ. L'élément cn a un attribut type dont la valeur par défaut est "real". Certains processeurs pourront donc utiliser cette information pour vérifier la validité des opérations indiquées.

Bien que MathML définisse les types des arguments des fonctions, des opérateurs et des relations, et fournisse un mécanisme de typage des arguments, un processeur MathML conforme n'est pas tenu de vérifier le type. En d'autres termes, un processeur MathML ne générera aucune d'erreur si les types des arguments sont inexacts. Si le processeur est un système d'algèbre automatique, il sera peut-être incapable d'évaluer une expression mais aucune erreur MathML ne sera générée.

4.3 Les attributs des éléments de contenu

4.3.1 Les valeurs des attributs des éléments de contenu

Les attributs des éléments de contenu sont tous de type CDATA, c'est-à-dire que n'importe quelle chaîne de caractères sera acceptée comme valide. En outre, chaque attribut comprend une liste de valeurs prédéfinies qu'un processeur de contenu est censé reconnaître et traiter. La raison pour laquelle les valeurs des attributs ne sont pas restreintes formellement à cette liste de valeurs prédéfinies est pour en permettre l'extension. Un processeur rencontrant une valeur non reconnue (absente de la liste prédéfinie) peut la traiter de manière valide comme étant la valeur par défaut de cet attribut.

4.3.2 Les attributs modifiant la sémantique du balisage de contenu

Chaque attribut est suivi des éléments sur lesquels il peut s'appliquer.

4.3.2.1 L'attribut base

cn
Il indique la base numérique du nombre. Valeurs prédéfinies : toute chaîne numérique. La valeur par défaut est 10

4.3.2.2 L'attribut closure

interval
Il indique la fermeture de l'intervalle. Valeurs prédéfinies : "open", "closed", "open-closed", "closed-open". La valeur par défaut est "closed"

4.3.2.3 L'attribut definitionURL

csymbol, declare, semantics, et tous les éléments opérateurs
Il pointe vers une définition externe de la sémantique du symbole ou de la structure déclarés. La valeur est une adresse URL, ou une adresse URI, qui devrait pointer vers un certain type de définition. Cette définition remplace la sémantique MathML par défaut. Pour l'instant, MathML ne définit pas le format dans lequel il faudrait donner les définitions sémantiques externes. En particulier, la cible de l'adresse URI n'est pas obligée d'être chargeable et analysable. Par exemple, une définition externe pourrait donner la sémantique dans une forme lisible par un humain. Idéalement, dans la plupart des situations, la définition pointée par definitionURL devrait avoir un format lisible par une machine. Toutefois, MathML n'impose pas un tel format pour plusieurs raisons : L'attribut definitionURL n'a pas de valeur par défaut, c'est-à-dire que la sémantique est définie dans le fragment MathML et/ou par celle par défaut de MathML.

4.3.2.4 L'attribut encoding

annotation, annotation-xml, csymbol, semantics, tous les éléments opérateurs
Il indique le codage de l'annotation ou, dans le cas de csymbol, semantics et des éléments opérateurs, la syntaxe de la cible désignée par l'attribut definitionURL. Les valeurs prédéfinies sont "MathML-Presentation", "MathML-Content". D'autres valeurs typiques : "TeX", "OpenMath". La valeur par défaut est "", c.à.d. non définie.

4.3.2.5 L'attribut nargs

declare
Il indique le nombre d'arguments des déclarations de fonctions. Valeurs prédéfinies : "nary" ou toute chaîne numérique. La valeur par défaut est "1".

4.3.2.6 L'attribut occurrence

declare
Il indique l'occurence des déclarations des opérateurs. Valeurs prédéfinies : "prefix", "infix", "function-model". La valeur par défaut est "function-model".

4.3.2.7 L'attribut order

list
Il indique l'ordre dans la liste. Valeurs prédéfinies : "lexicographic", "numeric". La valeur par défaut est "numeric".

4.3.2.8 L'attribut scope

declare
Il indique le champ d'application de la déclaration. Valeurs prédéfinies : "local", "global" (déconseillée). Dans MathML 2.0, l'apparition de l'élément declare est restreinte au début de l'élément math. Il n'y a donc aucune différence entre les deux valeurs possibles de l'attribut scope et il peut être ignoré sans risques. La valeur d'attribut "global" est déconseillée pour ce rôle car la valeur "local" représente mieux le concept. Dans l'idéal, on aimerait faire des déclarations pour le document entier avec une valeur d'attribut scope qui serait global-document. Toutefois, le mécanisme exact des déclarations portant sur tout le document dépend beaucoup de la façon dont XML sera incorporé dans HTML, des futurs mécanismes de feuille de style XML et du modèle objet de document sous-jacent. Puisque ces technologies d'appoint sont actuellement toujours en cours de développement, la spécification MathML n'inclut pas global-document comme valeur prédéfinie de l'attribut scope. Par contre, il est prévu de revoir cette question dans d'autres versions de MathML lorsque ces technologies d'appoint seront stabilisées. À court terme, les développeurs MathML qui souhaitent simuler l'effet d'une déclaration pour tout le document sont encouragés à prétraiter les documents afin de distribuer des déclarations pour tout le document à chaque élément math individuel du document.

4.3.2.9 L'attribut type

cn
Il indique le type du nombre. Valeurs prédéfinies : "e-notation", "integer", "rational", "real", "float", "complex-polar", "complex-cartesian", "constant". La valeur par défaut est "real". Remarque : chaque type de données implique l'adhésion des données à certaines conventions de formatage, détaillées ci-dessous. Si les données ne sont pas conformes au format attendu, une erreur est générée. Voici le détail des formats individuels :
real
Un nombre réel se présente dans une notation décimale. Cette notation se compose d'un signe optionnel (+ ou -) suivi par une chaîne de chiffres, divisée le cas échéant en une partie entière et une partie fractionnaire par un point décimal. Quelques exemples : 0.3, 1 et -31.56. Si l'attribut base indique une valeur différente, alors les chiffres doivent s'interpréter comme étant calculés dans cette base.
e-notation
On peut aussi représenter un nombre réel en notation scientifique. Ces nombres se composent de deux parties (une mantisse et un exposant) séparées par la lettre e ou E un élément <sep/>. La première partie est un nombre réel, tandis que la seconde est un exposant entier indiquant une puissance de la base. Par exemple, 12.3e5 12.3<sep/> représente 12.3 fois 105. La représentation par défaut de cet exemple est 12.3e5.
integer
Un entier est représenté par un signe optionnel suivi par une chaîne d'un ou plusieurs chiffres. Ces chiffres dépendent de l'attribut base. Si l'attribut base est présent, il définit la base du codage des chiffres, et il le spécifie en base 10. Ainsi, la définition base="16" définit un codage hexadécimal. Lorsque la valeur de l'attribut base est supérieure à 10, on ajoute des lettres dans l'ordre alphabétique comme chiffres. Les valeurs légitimes de l'attribut base sont donc comprises entre 2 et 36.
rational
Un nombre rationnel est représenté par deux entiers séparés par un élément <sep/>. Si l'attribut base est présent, il indique la base utilisée pour coder les chiffres des deux entiers.
complex-cartesian
Un nombre complexe prend la forme de deux nombres réels séparés par un élément <sep/>.
complex-polar
Un nombre complexe est défini sous la forme d'une magnitude et d'un angle (en radians). Les données brutes se présentent sous la forme de deux nombre réels séparés par un élément <sep/>.
constant
Le type "constant" sert à indiquer des constantes nommées. Par exemple, on devrait interpréter l'instance <cn type="constant">&pi;</cn> selon la sémantique de la constante mathématique Pi. Les données d'une balise de constante cn peuvent être l'une des constantes communes suivantes :
Symbole Valeur
&pi; Le Pi habituel de la trigonométrie valant approximativement 3.141592653...
&ExponentialE; (ou &ee;) La base des logarithmes naturels valant approximativement 2.718281828...
&ImaginaryI; (ou &ii;) La racine carrée de -1
&gamma; La constante d'Euler valant approximativement 0.5772156649...
&infin; (ou &infty;) L'infini. L'interprétation exacte varie selon le contexte.
&true; La constante logique true
&false; La constante logique false
&NotANumber; (ou &NaN;) Le résultat d'une division en virgule flottante mal définie
ci
Il indique le type de l'identificateur. Valeurs prédéfinies : "integer", "rational", "real", "float", "complex", "complex-polar", "complex-cartesian", "constant" ou le nom d'un élément de contenu. Les significations des valeurs des attributs communs avec l'élément cn sont les mêmes que celles listées pour ce dernier. L'utilisation de la valeur d'attribut "complex" est prévue au cas où l'identificateur représente un nombre complexe dont la représentation particulière (polaire ou cartésienne) est inconnue ou bien non pertinente. La valeur par défaut est "", c.à.d. non définie.
declare
Il indique le type de l'identificateur déclaré. Valeurs prédéfinies : le nom d'un élément de contenu. La valeur par défaut est "ci", c.à.d. un identificateur générique.
set
Il indique le type de l'ensemble. Valeurs prédéfinies : "normal", "multiset". La valeur "multiset" permet les répétitions. La valeur par défaut est "normal".
tendsto
Il sert à indiquer la notion d'une quantité approchant d'une autre. Il se présente comme un conteneur ce qui en facilite l'utilisation dans la construction d'une expression avec une limite. Valeurs prédéfinies : "above", "below", "two-sided". La valeur par défaut est "above".

4.3.3 Les attributs modifiant le rendu du balisage de contenu

4.3.3.1 type

Outre l'apport d'informations sémantiques, l'interprétation de l'attribut type peut fournir des informations de rendu. Par exemple, dans ce code :

<ci type="vector">V</ci>

Un moteur de rendu pourrait afficher le vecteur V en caractère gras.

4.3.3.2 Les attributs généraux

Tous les éléments de contenu gèrent les attributs généraux suivants, lesquels peuvent servir à modifier le rendu du balisage :

Les attributs class, style et id sont prévus pour compatibilité avec les feuilles de style en cascade (CSS), comme décrit dans la section 2.4.5 Les attributs communs à tous les éléments MathML.

Le balisage de contenu ou sémantique est lié à la prémisse (souvent implicite) selon laquelle on peut toujours obtenir une forme de présentation si la sémantique est connue. Si le but principal de l'auteur est de baliser des expressions mathématiques évaluables et réutilisables, le rendu exact de l'expression n'est probablement pas critique, tant qu'il est aisément compréhensible. Par contre, si l'auteur se préoccupe davantage de fournir assez d'informations sémantiques en plus pour augmenter l'accessibilité d'un document en facilitant de meilleurs rendu visuel, rendu sonore ou traitement spécialisé, le contrôle exact de la notation employée devient alors indispensable.

Les éléments MathML acceptent un attribut other (cf. la section 7.2.3 Les attributs de données non définies), qui peut servir à définir des choses non documentées spécifiquement dans MathML. L'auteur peut utiliser cet attribut sur les balises de contenu pour exprimer une préférence entre des formes équivalentes de la structure d'un élément de contenu particulier, là où la sélection de la présentation n'a rien à voir avec la sémantique. Comme exemples :

Ainsi, à supposer qu'un moteur de rendu particulier reconnaisse un attribut display permettant une sélection entre une fraction en mode écrit et une fraction en mode affiché (N.d.T. display-style), un auteur pourrait écrire :

<apply other='display="scriptstyle"'>
  <divide/>
  <mn> 1 </mn>
  <mi> x </mi>
</apply>

Afin d'indiquer une préférence pour le rendu 1/x.

Les informations fournies dans l'attribut other sont destinées à des moteurs de rendu ou processeurs spécifiques, et les valeurs permises sont donc déterminées par le moteur de rendu utilisé. Un moteur de rendu peut légalement ignorer ces informations. Volontairement, comme dans le cas d'un éditeur imposant le style de la maison, ou simplement parce que le moteur de rendu ne les comprend pas, ou qu'il est incapable de les utiliser.

4.4 Les éléments de balisage du contenu

Cette section contient les descriptions détaillées des balises de contenu MathML. Elles sont rangées en catégories qui reflètent généralement les domaines des mathématiques dont elles sont issues, et aussi le regroupement dans la définition DTD de MathML. Dans MathML, le discours ne différencie pas les opérateurs et les fonctions. Cette distinction ici et dans la définition DTD est maintenue pour des raisons d'utilisation historiques.

Lorsqu'on travaille avec les éléments de contenu, il peut être utile de rappeler les points suivants :

Les éléments de contenu disponibles sont les suivants :

4.4.1 Les éléments atomiques

4.4.1.1 Les nombres (cn)

Discussion

L'élément cn sert à définir des constantes numériques effectives. Le modèle de contenu doit fournir suffisamment d'informations pour que l'entrée d'un nombre comme données dans un système de calcul soit possible. Par défaut, ce nombre est un réel signé en base 10. Ainsi, le contenu se compose normalement d'une valeur de type PCDATA réduite à un signe, d'une chaîne de chiffres décimaux et éventuellement un point décimal, ou sinon, de l'une des constantes symboliques prédéfinies telle que &pi;.

L'élément cn utilise l'attribut type pour représenter d'autres types de nombres tels que, par exemple, un entier, un rationnel, un réel ou un complexe, et l'attribut base pour indiquer la base numérique.

En plus d'une valeur PCDATA simple, l'élément cn accepte en contenu des valeurs PCDATA séparées par l'élément sep (vide). Cela détermine les différentes parties nécessaires pour construire des nombres rationnels ou des nombres complexes cartésiens.

L'élément cn admet également un balisage de présentation arbitraire dans son contenu (cf. le chapitre 3 Le balisage de présentation) et sa présentation peut donc être très élaborée.

On peut utiliser d'autres notations de nombres en entrée, mais elles doivent être définies explicitement avec les attributs definitionURL et encoding, pour désigner une spécification écrite sur la façon d'interpréter une suite de nombres réels séparés par des éléments <sep/>.

Attributs

Toutes les valeurs d'attribut sont de type CDATA :

type
Les valeurs admises sont : "real", "integer", "rational", "complex-cartesian", "complex-polar", "constant"
base
Un nombre (de type CDATA pour la définition DTD XML) entre 2 et 36.
definitionURL
Une adresse URL ou une adresse URI pointant vers une définition de remplacement.
encoding
La syntaxe de la définition de remplacement.
Exemples
<cn type="real"> 12345.7 </cn>
<cn type="integer"> 12345 </cn>
<cn type="integer" base="16"> AB3 </cn>
<cn type="rational"> 12342 <sep/> 2342342 </cn>
<cn type="complex-cartesian"> 12.3 <sep/> 5 </cn>
<cn type="complex-polar"> 2 <sep/> 3.1415 </cn>
<cn type="constant">  &pi; </cn>
Rendu par défaut

Par défaut, le rendu d'un bloc contigu de valeurs PCDATA contenues dans un élément cn devrait être comme s'il était enveloppé dans un élément de présentation mn.

Si l'application gère le rendu de texte bidirectionnel, alors le rendu dans un élément cn suit les règles du rendu bidirectionnel Unicode, comme s'il était enveloppé dans un élément de présentation mn.

De même, le balisage de présentation dans un élément cn devrait être rendu normalement. Un mélange de valeurs PCDATA et de balisage de présentation devrait se rendre comme s'il était enveloppé dans un élément mrow, les blocs contigus de valeurs PCDATA étant enveloppés dans des éléments mn.

Toutefois, les systèmes mathématiques ne produisent pas tous un rendu visuel ou sonore du balisage de contenu. Les applications réceptrices sont libres de disposer du nombre de la façon dont elles manipulent normalement les données numériques. Certains systèmes peuvent simplifier le nombre rationnel 12342/2342342 en 6171/1171171, tandis que des systèmes purement en virgule flottante peuvent l'approximer par 0.5269085385e-2. Tous les nombres peuvent être réexprimés en base 10. Le rôle de MathML consiste simplement à enregistrer suffisament d'informations à propos de l'objet mathématique et sa structure afin qu'on puisse l'analyser correctement.

Les rendus des expressions MathML précédentes sont inclus pour faciliter la compréhension du codage MathML correspondant et pour donner des suggestions aux développeurs d'applications de rendu. Dans chaque cas, aucune évaluation mathématique n'est attendue ni impliquée.

4.4.1.2 Les identificateurs (ci)

Discussion

L'élément ci sert à nommer un identificateur dans une expression MathML (par exemple, une variable). Ces noms sont utilisés pour identifier des objets mathématiques. Par défaut, ils sont censés représenter des scalaires complexes. L'élément ci admet un balisage de présentation arbitraire dans son contenu (cf. le chapitre 3 Le balisage de présentation) et sa présentation en tant que symbole peut donc être très élaborée.

L'élément ci utilise l'attribut type pour indiquer le type de l'objet qu'il représente. Les types valides comprennent "integer", "rational", "real", "float", "complex", "complex-polar", "complex-cartesian", "constant" et, plus généralement, n'importe quel nom d'éléments conteneurs MathML (par exemple, vector) ou leurs types de valeur. L'attribut type ne convient pas pour un traitement plus avancé des types. Les types avancés nécessitent une structure significative propre (par exemple, vector(complex)) et ils se construiront probablement mieux comme des objects mathématiques associés ensuite à une expression MathMl au travers de l'élément semantics. D'autres informations sur ce sujet sont prévus. Cf. le site Web de MathML pour des précisions. L'attribut definitionURL peut servir à associer d'autres propriétés à l'élément ci. Voir la discussion à propos des variables liées (cf. la section 4.4.5.6 Les variables liées (bvar)) pour une conséquence importante. Lorsqu'on utilise l'élément comme un opérateur, il peut avoir des qualificatifs comme décrit dans la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

Exemples
<ci> x </ci>
<ci type="vector"> V </ci>
<ci>
  <msub>
    <mi>x</mi>
    <mi>a</mi>
  </msub>
</ci>
Rendu par défaut

Si le contenu d'un élément ci est balisé par des éléments de présentation, c'est cette présentation qui est utilisée. Si aucun balisage de ce type n'est fourni, alors le contenu de type PCDATA sera typiquement rendu comme s'il s'agissait du contenu d'un élément mi.

Si l'application gère un rendu de texte bidirectionnel, alors le rendu dans un élément ci suit les règles du rendu bidirectionnel, comme s'il était enveloppé dans un élément de présentation mi.

Un moteur de rendu peut utiliser la valeur de l'attribut type pour améliorer ce rendu. Par exemple, un symbole de type vector pourrait être rendu en caractères gras. Les rendus habituels des symboles précédents sont :

4.4.1.3 Les symboles à définition externe (csymbol)

Discussion

L'élément csymbol permet à l'auteur de créer dans MathML un élément dont la sémantique est définie de façon externe (c.à.d., non au sein du contenu MathML). Cet élément peut alors être employé dans une expression MathML, par exemple, comme un opérateur ou une constante. On se sert d'attributs pour indiquer la syntaxe et l'adresse de la définition externe de la sémantique du symbole.

Par constraste, on peut comparer l'utilisation de l'élément csymbol pour appeler une sémantique externe et celle de l'élément semantics pour apporter d'autres informations en ligne (c.à.d., dans le fragment MathML) à une construction MathML. Cf. la section 4.2.6 La syntaxe et la sémantique.

Attributs

Toutes les valeurs des attributs sont de type CDATA :

definitionURL
Un pointeur vers une définition externe de la sémantique du symbole. MathML n'indique aucune syntaxe particulière pour écrire cette définition
encoding
Il donne la syntaxe de la définition désignée par l'attribut definitionURL. L'application peut alors tester la valeur de cet attribut pour déterminer si elle est capable, ou non, de traiter la cible definitionURL. Cette syntaxe peut être un texte ou une syntaxe formelle, tel que OpenMath.
Exemples
<!-- appel d'une définition de syntaxe formelle OpenMath
        de la fonction de Bessel -->
<apply>
  <csymbol encoding="OpenMath" 
           definitionURL="http://www.openmath.org/cd/BesselFunctions.ocd">
    <msub><mi>J</mi><mn>0</mn></msub>
  </csymbol>
  <ci>y</ci>
</apply>

<!-- appel d'une description textuelle de la constante de Boltzmann
        lisible par un humain -->
<csymbol encoding="text" 
         definitionURL="www.example.org/universalconstants/Boltzmann.htm">
  k
</csymbol>
Rendu par défaut

Par défaut, le rendu d'un bloc contigu de valeurs PCDATA contenues dans un élément csymbol devrait être comme s'il était enveloppé dans un élément de présentation mo.

Si l'application gère le rendu de texte bidirectionnel, alors le rendu dans un élément csymbol suit les règles du rendu bidirectionnel Unicode, comme s'il était enveloppé dans un élément de présentation mo.

De même, le balisage de présentation contenu dans un élément csymbol devrait être rendu normalement. Un mélange de valeurs PCDATA et d'un balisage de présentation devrait se rendre comme s'il était contenu enveloppé dans un élément mrow, les blocs contigus de valeurs PCDATA étant enveloppés dans des éléments mo. Le rendu par défaut des exemples précédents serait :

Puisque l'élément csymbol sert à appeler une sémantique définie à l'extérieur, la présence d'éléments de contenu MathML incorporés dans l'élément csymbol constitue une condition d'erreur MathML.

4.4.2 Les éléments de contenu de base

4.4.2.1 Les applications (apply)

Discussion

L'élément apply permet l'application d'une fonction ou d'un opérateur à ses arguments. Presque toutes les constructions d'expressions dans le balisage de contenu MathML sont réalisées par l'application d'opérateurs ou de fonctions à des arguments. Le premier sous-élément de apply est l'opérateur à appliquer, les autres sous-éléments étant des arguments ou des qualificatifs.

L'élément apply est conceptuellement nécessaire pour distinguer une fonction, ou un opérateur, d'une instance de son utilisation. L'expression construite en appliquant une fonction à zéro à plusieurs arguments est toujours un élément de l'ensemble d'arrivée de la fonction.

L'utilisation exacte dépend de l'opérateur appliqué. Par exemple, l'opérateur plus peut avoir zéro à plusieurs arguments, tandis que l'opérateur minus impose un ou deux arguments pour être correctement formé.

Si l'objet appliqué comme fonction n'est pas un élément déjà connu comme étant une fonction (tels que les éléments fn (déconseillé), sin ou plus), alors il est traité comme si c'était une fonction.

Quelques opérateurs comme les fonctions définies par l'utilisateur au moyen d'éléments declare ou csymbol, de diff et int emploient des arguments nommés. Ces arguments spéciaux sont des éléments qui apparaissent comme sous-éléments de apply et qui identifient des paramètres, tels que la variable de différenciation ou le domaine d'intégration. Ces éléments sont abordés plus loin dans la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

Exemples
<apply>
  <factorial/>
  <cn>3</cn>
</apply>
<apply>
  <plus/>
  <cn>3</cn>
  <cn>4</cn>
</apply>
<apply>
  <sin/>
  <ci>x</ci>
</apply>
Rendu par défaut

Un système mathématique recevant un élément apply est libre d'en faire ce qu'il entreprend normalement avec de telles données mathématiques. Cela peut se traduire par une absence de rendu (par exemple, pour un validateur de syntaxe) ou par l'évaluation de l'application de fonction et le rendu de son seul résultat (par exemple, sin(0) \rightarrow 0).

Lors du rendu d'une application de fonction non évaluée, beaucoup de rendus appropriés sont possibles. Le choix dépend souvent de la fonction ou de l'opérateur appliqués. Les applications des opérations de base, tel que plus, sont généralement présentées en employant une notation infixe, alors que l'application d'une fonction sin utiliserait une notation plus traditionnelle, telle que sin(x). Cf. le rendu par défaut de l'opérateur appliqué.

Les applications de fonctions définies par l'utilisateur (cf. csymbol, fn), non évaluées par l'application réceptrice ou l'application de rendu, seront habituellement rendues en utilisant une notation de fonction traditionnelle, sauf indication d'une autre présentation par une balise semantics.

4.4.2.2 Les relations (reln)

Discussion

L'élément reln était utilisé dans MathML 1.0 pour construire une équation ou une relation. Les relations se construisaient exactement de la même façon que l'on utilise l'élément apply. Cette utilisation est déconseillée dans MathML 2.0 en faveur de l'élément apply dont l'utilisation est plus générale.

Le premier sous-élément de reln est l'opérateur de relation à appliquer, les autres sous-éléments agissant comme arguments. Cf. la section 4.2.4 Les relations pour des précisions.

Exemples
<reln>
  <eq/>
  <ci> a </ci>
  <ci> b </ci>
</reln>
<reln>
  <lt/>
  <ci> a </ci>
  <ci> b </ci>
</reln>
Rendu par défaut

4.4.2.3 Les fonctions (fn)

Discussion

L'élément fn rend explicite l'utilisation d'un objet MathML plus général (éventuellement construit) comme s'il s'agissait d'une fonction prédéfinie, telles que les fonctions sin ou plus.

L'élément fn contient exactement un sous-élément qui sert à donner le nom (ou la forme de la présentation) de la fonction. Lorsque l'élément fn est utilisé comme premier sous-élément d'un élément apply, le nombre des arguments à suivre est déterminé par le contenu de fn.

Dans MathML 1.0, l'élément fn constituait aussi le mécanisme principal servant à étendre l'ensemble des fonctions mathématiques connues. Cette utilisation est maintenant déconseillée en faveur de l'élément csymbol d'application plus générale. (On peut aussi introduire des nouvelles fonctions par le biais de l'élément declare en conjonction avec une expression lambda).

Exemples
<fn><ci> L </ci> </fn>
<apply>
  <fn>
  <apply>
    <plus/>
    <ci> f </ci>
    <ci> g </ci>
  </apply>
  </fn>
  <ci>z</ci>
</apply>
Rendu par défaut

Un objet fn est rendu de la même façon que son contenu. Une application de rendu peut ajouter des ornement supplémentaires, telles que des parenthèses, pour clarifier le sens.

4.4.2.4 Les intervalles (interval)

Discussion

L'élément interval sert à représenter des intervalles mathématiques de nombres réels. Il admet un attribut closure qui peut prendre l'une des valeurs parmi "open", "closed", "open-closed" ou "closed-open", la valeur par défaut étant "closed".

Les domaines plus généraux se construisent au moyen des éléments condition et bvar pour lier des variables libres à des contraintes.

L'élément interval attend soit deux sous-éléments évalués à des nombres réels, soit un sous-élément condition qui définit l'intervalle.

Exemples
<interval>
  <ci> a </ci>
  <ci> b </ci>
</interval>
<interval closure="open-closed">
  <ci> a </ci>
  <ci> b </ci>
</interval>
Rendu par défaut

4.4.2.5 Les symétriques (inverse)

Discussion

L'élément inverse s'applique à une fonction afin de construire une expression générique de la fonction symétrique de cette fonction. (Cf. aussi la discussion à propos de la structure inverse dans la section 4.2.1.5 La structure inverse). Comme pour les autres fonctions MathML, l'élément inverse peut s'appliquer à des arguments, ou bien apparaître seul, auquel cas il représente un opérateur d'inversion abstrait agissant sur d'autres fonctions.

Une utilisation typique de l'élément inverse est dans un document HTML discutant d'un certain nombre d'autres définitions d'une fonction particulière et qu'il est donc nécessaire d'écrire et de définir f(-1)(x). Pour associer une définition particulière à f(-1), utilisez les attributs definitionURL et encoding.

Exemples
<apply>
  <inverse/>
  <ci> f </ci>
</apply>
<apply>
  <inverse definitionURL="../MyDefinition.htm" encoding="text"/>
  <ci> f </ci>
</apply>
<apply>
  <apply><inverse/>
    <ci type="matrix"> a </ci>
  </apply>
  <ci> A </ci>
</apply>
Rendu par défaut

Le rendu par défaut d'une fonction symétrique utilise un exposant entre parenthèses, comme dans f(-1)(x).

4.4.2.6 Le séparateur (sep)

Discussion

L'élément sep sert à séparer des valeurs PCDATA en atomes distincts pour l'analyse du contenu des diverses formes spécialisées des éléments cn. Par exemple, on utilise sep pour indiquer les parties réelle et imaginaire d'un nombre complexe (cf. la section 4.4.1 Les éléments atomiques). S'il apparaît entre des éléments MathML, c'est une condition d'erreur MathML.

Exemples
<cn type="complex-cartesian"> 3 <sep/> 4 </cn>
Rendu par défaut

L'élément sep n'est pas directement rendu (cf. la section 4.4.1 Les éléments atomiques).

4.4.2.7 Les conditions (condition)

Discussion

L'élément condition sert à placer une condition sur une ou plusieurs variables libres ou des identificateurs. On peut définir les conditions en termes de relations que les variables doivent satisfaire, y compris les relations générales telle que l'appartenance à un ensemble.

On l'utilise pour définir des ensembles généraux et des listes dans les situations interdisant l'énumération explicite des éléments. L'élément condition contient soit un seul élément apply, soit un seul élément reln ; l'élément apply sert à construire des conditions composées. Par exemple, on l'utilise ci-dessous pour décrire l'ensemble de tous les x tel que x < 5. Voir la discussion sur les ensembles dans la section 4.4.6 La théorie des ensembles. Cf. la section 4.2.5 Les conditions pour des précisions.

Exemples
<condition>
  <apply><in/><ci> x </ci><ci type="set"> R </ci></apply>
</condition>
<condition>
  <apply>
    <and/>
    <apply><gt/><ci> x </ci><cn> 0 </cn></apply>
    <apply><lt/><ci> x </ci><cn> 1 </cn></apply>
  </apply>
</condition>
<apply>
  <max/>
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply> <and/>
      <apply><gt/><ci> x </ci><cn> 0 </cn></apply>
      <apply><lt/><ci> x </ci><cn> 1 </cn></apply>
    </apply>
  </condition>
  <apply>
    <minus/>
    <ci> x </ci>
    <apply>
      <sin/>
      <ci> x </ci>
    </apply>
  </apply>
</apply>
Rendu par défaut

4.4.2.8 Les déclarations (declare)

Discussion

La construction declare a deux rôles principaux. Le premier est de changer ou de fixer les valeurs d'attribut par défaut d'un objet mathématique particulier. Le second est d'établir une association entre un nom et un objet. Une fois la déclaration effective, l'objet nom acquiert les nouvelles caractéristiques de l'attribut et (si l'objet en second est présent) toutes les propriétés de l'objet associé.

Les divers attributs de l'élément declare assignent des propriétés à l'objet à déclarer, ou déterminent la portée de la déclaration.

La portée d'une déclaration est locale à l'élément conteneur englobant. L'attribut scope admet seulement la valeur "local", mais d'autres extensions sont à prévoir. Comme indiqué dans la section 4.3.2.8 L'attribut scope, MathML ne dispose pas encore d'un mécanisme de déclaration globale pour tout le document, mais il est prévu de l'ajouter dans d'autres versions de MathML, lorsque les technologies d'appoint seront disponibles.

L'élément declare admet un ou deux sous-éléments. Le premier, qui est obligatoire, est l'objet affecté par la déclaration. C'est habituellement un élément ci qui fournit l'identificateur à déclarer, comme dans :

<declare type="vector"> <ci> V </ci> </declare>

Le second sous-élément, optionnel, est un constructeur initialisant les variables :

<declare type="vector">
  <ci> V </ci>
  <vector>
    <cn> 1 </cn><cn> 2 </cn><cn> 3 </cn>
  </vector>
</declare>

Le type du constructeur et celui de l'élément doivent coïncider. Par exemple, si la valeur de l'attribut type de la déclaration est "fn", le second sous-élément (le constructeur) doit équivaloir à un élément fn. (Cela comprendrait les éléments fn réels, les éléments lambda et n'importe quelle fonction définie dans le jeu de base des balises de contenu). Si aucun type n'est indiqué dans la déclaration, alors l'attribut type du nom déclaré prend le type du constructeur (le second sous-élément) de la déclaration. L'attribut type de la déclaration peut se révéler spécialement utile dans le cas particulier où le second élément est une balise sémantique.

Attributs

Toutes les valeurs d'attributs sont de type CDATA :

type
Il définit le type d'élément MathML de l'identificateur déclaré.
scope
Il définit la portée de l'application de la déclaration.
nargs
Il définit le nombre d'arguments des déclarations de fonction.
occurrence
Il décrit l'utilisation de l'opérateur comme des indications "prefix", "infix" ou "function-model".
definitionURL
Une adresse URI pointant sur une sémantique précise de la fonction.
encoding
La syntaxe de la sémantique précise de la fonction.
Exemples

La déclaration suivante :

<declare type="fn" nargs="2">
  <ci> f </ci>
  <apply>
    <plus/>
    <ci> F </ci><ci> G </ci>
  </apply>
</declare>

Elle déclare f comme étant une fonction à deux variables avec la propriété f(xy) = (F + G)(xy).

Cette déclaration :

<declare type="fn">
  <ci> J </ci>
  <lambda>
    <bvar><ci> x </ci></bvar>
    <apply><ln/>
      <ci> x </ci>
    </apply>
  </lambda>
</declare>

Elle associe le nom J à une fonction à une variable, définie telle que J(y) = ln y. (Remarquez que, du fait de l'attribut type de l'élément declare, le second argument doit être de type fonction, à savoir une fonction connue comme sin, ou une structure lambda).

L'attribut type sur la déclaration est seulement nécessaire si on ne peut pas inférer le type du second argument.

Même si la déclaration est effective, on peut toujours forcer les valeurs des attributs de façon sélective, comme dans <ci type="set"> S </ci>. Cette capacité est nécessaire pour écrire des déclarations de la forme soit s un élément de S.

Rendu par défaut

Puisque la structure declare n'est pas rendue directement, la plupart des déclarations seront vraisemblablement invisibles au lecteur. Toutefois, les déclarations peuvent avoir des effets très divers sur une application qui évalue ou manipule un contenu MathML. Cette déclaration en vigueur :

<declare>
  <ci> v </ci>
  <vector>
    <cn> 1 </cn>
    <cn> 2 </cn>
    <cn> 3 </cn>
  </vector>
</declare>

Le symbole v acquiert toutes les propriétés de l'élément vector, et même sa dimension et ses composants ont des valeurs significatives. Cela peut affecter le rendu de v par certaines applications, tout comme son traitement mathématique.

4.4.2.9 La structure lambda (lambda)

Discussion

L'élément lambda sert à construire une fonction définie par l'utilisateur, à partir d'une expression et d'une ou plusieurs variables. Une structure lambda avec n variables internes comprend n+1 sous-éléments. Les n premiers sous-éléments identifient les variables utilisées comme paramètres fictifs dans le dernier sous-éléments pour les valeurs réelles des paramètres. Cf. la section 4.2.2.2 Les constructeurs pour des précisions.

Exemples

Le premier exemple présente une construction lambda simple :

<lambda>
  <bvar><ci> x </ci></bvar>
  <apply><sin/>
    <apply>
      <plus/>
      <ci> x </ci>
      <cn> 1 </cn>
    </apply>
  </apply>
</lambda>

L'exemple suivant construit une fonction à un argument, dans laquelle l'argument b indique la limite supérieure d'une intégrale définie particulière :

<lambda>
  <bvar><ci> b </ci></bvar>
  <apply>
    <int/>
    <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>
</lambda>

On utilise souvent de telles constructions en conjonction avec l'élément declare pour construire des nouvelles fonctions.

Rendu par défaut

4.4.2.10 La composition des fonctions (compose)

Discussion

L'élément compose représente l'opérateur de composition de fonctions. Remarquez que MathML ne fait aucune hypothèse concernant le domaine et l'ensemble d'arrivée des fonctions constituantes de la composition ; le domaine de la composition résultante peut être vide.

Pour forcer la sémantique par défaut de l'élément compose, ou pour associer une définition plus spécifique à la composition de fonctions, utilisez les attributs definitionURL et encoding. Cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs pour des précisions.

Exemples
<apply>
  <compose/>
  <fn><ci> f </ci></fn>
  <fn><ci> g </ci></fn>
</apply>
<apply>
  <compose/>
  <ci type="fn"> f </ci>
  <ci type="fn"> g </ci>
  <ci type="fn"> h </ci>
</apply>
<apply>
  <apply><compose/>
    <fn><ci> f </ci></fn>
    <fn><ci> g </ci></fn>
  </apply>
  <ci> x </ci>
</apply>
<apply>
  <fn><ci> f </ci></fn>
  <apply>
    <fn><ci> g </ci></fn>
    <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

4.4.2.11 L'application identique (ident)

Discussion

L'élément ident représente l'application identique. MathML ne fait aucune hypothèse concernant l'espace de fonctions dans lequel réside l'application identique. C'est-à-dire que l'interprétation exacte du domaine (et donc de l'ensemble d'arrivée) de l'application identique dépend du contexte où elle est utilisé.

Pour forcer la sémantique par défaut de l'élément ident, ou pour associer une définition plus spécifique, utilisez les attributs definitionURL et encoding (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemples
<apply>
  <eq/>
  <apply><compose/>
    <fn><ci> f </ci></fn>
    <apply><inverse/>
      <fn><ci> f </ci></fn>
    </apply>
  </apply>
  <ident/>
</apply>
Rendu par défaut

f \circ f^{-1} = \mathrm{id}

4.4.2.12 Le domaine (domain)

Discussion

L'élément domain indique le domaine d'une fonction donnée, c'est-à-dire l'ensemble des valeurs pour lesquelles elle est définie.

Pour forcer la sémantique par défaut de l'élément domain, ou pour associer une définition plus spécifique, utilisez les attributs definitionURL et encoding (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemples

Si f est une fonction définie sur l'ensemble des réels vers celui des rationnels, alors :

<apply>
  <eq/>
  <apply><domain/>
    <fn><ci> f </ci></fn>
  </apply>
  <reals/>
</apply>

Rendu par défaut

\mbox{domain}(f) = \mathbb{R}

4.4.2.13 L'ensemble d'arrivée (codomain)

Discussion

L'élément codomain indique l'ensemble d'arrivée d'une fonction donnée, c'est-à-dire l'ensemble de toutes les valeurs prises par la fonction. Chaque point de l'ensemble d'arrivée n'est pas forcément généré par la fonction appliquée à un certain point du domaine. (Par exemple, on peut savoir qu'une fonction admet des valeurs entières, et donc que son ensemble d'arrivée est l'ensemble des entiers, sans savoir (ou déclarer) quel sous-ensemble des entiers est visé par la fonction).

L'ensemble d'arrivée est également appelé co-domaine.

Pour forcer la sémantique par défaut de l'élément codomain, ou pour associer une définition plus spécifique, utilisez les attributs definitionURL et encoding (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemples

Si f est une fonction de l'ensemble des réels vers celui des rationnels, alors :

<apply>
  <eq/>
  <apply><codomain/>
    <fn><ci> f </ci></fn>
  </apply>
  <rationals/>
</apply>
Rendu par défaut

\mbox{codomain} (f) = \mathbb{Q}

4.4.2.14 L'image (image)

Discussion

L'élément image indique l'image d'une fonction donnée, c'est-à-dire l'ensemble des valeurs prises par la fonction. Chaque point de l'image est généré par la fonction appliquée à un certain point du domaine.

Pour forcer la sémantique par défaut de l'élément image, ou pour associer une définition plus spécifique, utilisez les attributs definitionURL et encoding (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemples

La fonction réelle sin est une fonction de l'ensemble des réels sur lui-même acceptant des valeurs entre -1 et 1 :

<apply>
  <eq/>
  <apply><image/>
    <sin/>
  </apply>
  <interval>
    <cn>-1</cn>
	<cn> 1</cn>
  </interval>
</apply>
Rendu par défaut

\mbox{image}(\sin) = [-1 , 1]

4.4.2.15 Le domaine d'application (domainofapplication)

Discussion

L'élément domainofapplication indique le domaine sur lequel une fonction donnée s'applique. Il permet d'offrir une alternative plus générale à la définition du domaine en utilisant des éléments qualificatifs, tels que bvar, lowlimit ou condition.

Pour forcer la sémantique par défaut de l'élément domainofapplication, ou pour associer une définition plus spécifique, utilisez les attributs definitionURL et encoding (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemples

L'intégrale d'une fonction f sur un domaine arbitraire C :

<apply>
  <int/>
  <domainofapplication>
    <ci> C </ci>
  </domainofapplication>
  <ci> f </ci>
</apply>
Rendu par défaut

Le rendu par défaut dépend de la fonction particulière appliquée.

\int_C f

4.4.2.16 Les déclarations en morceaux (piecewise, piece, otherwise)

Discussion

Les éléments piecewise, piece et otherwise servent à gérer les déclarations en morceaux de la forme H(x) = 0, si x est inférieur à 0, sinon H(x) = 1.

La déclaration se construit en utilisant l'élément piecewise. Celui-ci contient un ou plusieurs éléments piece et, en option, un élément otherwise. Chaque élément piece contient deux sous-éléments exactement. Le premier sous-élément définit la valeur prise par l'expression piecewise lorsque la condition indiquée dans le second sous-élément associé à piece est vraie.

L'élément otherwise permet de définir la valeur que doit prendre la fonction piecewise lorsqu'aucune des conditions (les seconds sous-éléments des éléments piece) n'est vraie, c'est-à-dire, une valeur par défaut.

À remarquer que l'ordre des sous-éléments piece n'implique aucun ordre d'exécution dans l'élément piecewise. L'auteur a la responsabilité de s'assurer que les sous-ensembles du domaine de la fonction définis par les seconds sous-éléments des éléments piece sont disjoints, ou, lorsqu'ils se chevauchent, que les valeurs du premier sous-élément correspondant de l'élément piece coïncident. Si ce n'est pas le cas, la signification de l'expression n'est pas définie.

Les éléments piecewise sont des constructeurs (cf. la section 4.2.2.2 Les constructeurs).

Exemples
<piecewise>
  <piece>
      <cn> 0 </cn>
      <apply><lt/><ci> x </ci> <cn> 0 </cn></apply>
  </piece>
  <otherwise>
      <ci> x </ci>
  </otherwise>
</piecewise>

Voici une définition possible de abs (x) :

<apply>
<eq/>
<apply>
  <abs/>
  <ci> x </ci>
</apply>
<piecewise>
  <piece>
      <apply><minus/><ci> x </ci></apply>
      <apply><lt/><ci> x </ci> <cn> 0 </cn></apply>
  </piece>
  <piece>
      <cn> 0 </cn>
      <apply><eq/><ci> x </ci> <cn> 0 </cn></apply>
  </piece>
  <piece>
      <ci> x </ci>
      <apply><gt/><ci> x </ci> <cn> 0 </cn></apply>
  </piece>
</piecewise>
</apply>

Rendu par défaut

|x| =   \left\{\begin{array}{ll}-x& \mbox{if } x < 0\\0& \mbox{if } x = 0 \\ x& \mbox{if } x > 0\end{array}\right.

4.4.3 L'arithmétique, l'algèbre et la logique

4.4.3.1 Le quotient (quotient)

Discussion

L'élément quotient est l'opérateur utilisé pour une division modulo dans une base particulière. Lorsqu'on applique l'opérateur quotient aux arguments entiers a et b, le résultat est le quotient entier de a divisé par b. C'est à dire, l'élément quotient renvoie l'entier unique q tel que a = q b + r. (Dans l'usage courant, on appelle q le quotient et r le reste).

L'élément quotient admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément quotient est un opérateur arithmétique binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <quotient/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Les diverses applications mathématiques vont utiliser ces donnée de différentes façons. Les applications de création pourraient choisir une image comme celle montrée ci-dessous, tandis que les applications de calcul pourraient l'évaluer à 2 pour a = 13 et b = 5.

Rendu par défaut

Il n'y a aucune notation courante pour ce concept. Quelques rendus possibles seraient :

4.4.3.2 Les factorielles (factorial)

Discussion

L'élément factorial sert à construire des factorielles.

L'élément factorial admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément factorial est un opérateur arithmétique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <factorial/>
  <ci> n </ci>
</apply>

Pour n = 5, l'expression serait évaluée à 120.

Rendu par défaut

n!

4.4.3.3 La division (divide)

Discussion

L'élément divide est l'opérateur de division.

L'élément divide admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément divide est un opérateur arithmétique binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <divide/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Puisqu'il s'agit d'une expression MathML, elle n'est pas évaluée. Toutefois, à réception d'une telle expression, certaines applications peuvent essayer d'évaluer et de simplifier la valeur. Par exemple, pour a = 5 et b = 2, certaines applications mathématiques l'évalueront à 2.5, tandis que d'autres la traiteront comme un nombre rationnel.

Rendu par défaut

a/b

4.4.3.4 Le maximum et le minimum (max, min)

Discussion

Les éléments max et min servent à comparer les valeurs représentées par leurs arguments. Ils renvoient respectivement le maximum et le minimum parmi ces valeurs.

Les éléments max et min admettent les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Les éléments max et min sont des opérateurs arithmétiques n-aires (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemples

Lorsqu'on doit comparer explicitement les objets, ceux-ci sont listés en arguments de la fonction comme dans :

<apply>
  <max/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

On peut aussi décrire les éléments à comparer en utilisant des variables liées avec un élément condition et une expression à maximiser (ou à minimiser), comme dans :

<apply>
  <min/>
  <bvar><ci>x</ci></bvar>
  <condition>
    <apply><notin/><ci> x </ci><ci type="set"> B </ci></apply>
  </condition>
  <apply>
      <power/>
    <ci> x </ci>
    <cn> 2 </cn>
  </apply>
</apply>

Remarquez qu'on doit déclarer la variable liée, même si elle est implicite en notation conventionnelle. Dans MathML 1.0, on pouvait omettre la variable liée et l'expression à évaluer (x), comme dans l'exemple à suivre ; cette utilisation est déconseillée dans MathML 2.0 en faveur d'une déclaration explicite, dans tous les cas, de la variable liée et de l'expression :

<apply>
  <max/>
  <bvar><ci>x</ci></bvar>
  <condition>
    <apply><and/>
      <apply><in/><ci>x</ci><ci type="set">B</ci></apply>
      <apply><notin/><ci>x</ci><ci type="set">C</ci></apply>
    </apply>
  </condition>
  <ci>x</ci>
</apply>
Rendu par défaut

4.4.3.5 La soustraction (minus)

Discussion

L'élément minus est l'opérateur de soustraction.

L'élément minus admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément minus peut s'utiliser comme opérateur arithmétique unaire (par exemple, pour représenter -x), ou comme opérateur arithmétique binaire (par exemple, pour représenter x - y).

Exemple
<apply> <minus/>
  <ci> x </ci>
  <ci> y </ci>
</apply>

Pour x = 5 et y = 2, cela s'évaluerait à 3.

Rendu par défaut

x-y

4.4.3.6 L'addition (plus)

Discussion

L'élément plus est l'opérateur d'addition.

L'élément plus admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément plus est un opérateur arithmétique n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <plus/>
  <ci> x </ci>
  <ci> y </ci>
  <ci> z </ci>
</apply>

Pour x = 5, y = 2 et z = 1, cela s'évaluerait à 8.

Rendu par défaut

x+y+z

4.4.3.7 L'exponentiation (power)

Discussion

L'élément power est un opérateur d'exponentiation générique. C'est-à-dire, appliqué aux arguments a et b, il renvoie la valeur de a à la puissance b.

L'élément power admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément power est un opérateur arithmétique binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <power/>
  <ci> x </ci>
  <cn> 3 </cn>
</apply>

Pour x = 5, cela s'évaluerait à 125.

Rendu par défaut

x^3

4.4.3.8 Le reste (rem)

Discussion

L'élément rem est l'opérateur qui renvoie le reste d'une division modulo dans une base particulière. Lorsqu'on applique l'opérateur rem aux arguments entiers a et b, le résultat est le reste de a modulo b. C'est-à-dire que l'élément rem renvoie l'entier unique r, tel que a = q b + r, où r < q. (Dans l'usage courant, on appelle q le quotient et r le reste).

L'élément rem admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément rem est un opérateur arithmétique binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <rem/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 15 et b = 8, cela s'évaluerait à 7.

Rendu par défaut

a \mod b

4.4.3.9 La multiplication (times)

Discussion

L'élément times est l'opérateur de multiplication.

L'élément times admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple
<apply>
  <times/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 5.5 et b = 3, cela s'évaluerait à 16.5.

Rendu par défaut

a b

4.4.3.10 Les racines (root)

Discussion

L'élément root sert à construire des racines. On définit le type de la racine avec un élément degree qui devrait apparaître comme second sous-élément de l'élément apply englobant l'élément root. Ainsi, les racines carrées correspondent au cas où degree contient la valeur 2, les racines cubiques au cas où degree contient la valeur 3, et ainsi de suite. Si aucun élément degree n'est présent, la valeur par défaut de 2 est utilisée.

L'élément root admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément root est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemple

La racine nème de a est donnée par :

<apply>
  <root/>
  <degree><ci type='integer'> n </ci></degree>
  <ci> a </ci>
</apply>
Rendu par défaut

\sqrt[n]{a}

4.4.3.11 Le plus grand commun diviseur (gcd)

Discussion

L'élément gcd est utilisé pour indiquer le plus grand commun diviseur parmi ses arguments.

L'élément gcd admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément gcd est un opérateur n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply> <gcd/>
  <ci> a </ci>
  <ci> b </ci>
  <ci> c </ci>
</apply>

Pour a = 15, b = 21, c = 48, cela s'évaluerait à 3.

Rendu par défaut

\gcd(a, b, c)

Ce rendu par défaut est spécifique à un environnement en français : d'autres environnement peuvent avoir des rendus par défaut différents.

4.4.3.12 ET (and)

Discussion

L'élément and est l'opérateur booléen ET.

L'élément and admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément and est un opérateur logique n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <and/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Si les valeurs de a et b sont toutes deux évaluées à true, alors le résultat est true.

Rendu par défaut

a \land b

4.4.3.13 OU (or)

Discussion

L'élément or est l'opérateur booléen OU.

L'élément or admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément or est un opérateur logique n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <or/>
  <ci> a </ci>
  <ci> b </ci>
</apply>
Rendu par défaut

a \lor b

4.4.3.14 OU exclusif (xor)

Discussion

L'élément xor est l'opérateur OU exclusif.

L'élément xor admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément xor est un opérateur logique n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <xor/>
  <ci> a </ci>
  <ci> b </ci>
</apply>
Rendu par défaut

a \xor b

4.4.3.15 Non (not)

L'élément not est l'opérateur booléen non.

L'élément not admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément not est un opérateur logique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <not/>
  <ci> a </ci>
</apply>
Rendu par défaut

\neg a

4.4.3.16 Implique (implies)

Discussion

L'élément implies est l'opérateur de relation booléen implique.

L'élément implies admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément implies est un opérateur logique binaire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <implies/>
  <ci> A </ci>
  <ci> B </ci>
</apply>

Les applications mathématiques prévues pour l'évaluation de telles expressions évalueraient cette expression à true, pour a = false et b + true.

Rendu par défaut

A \Rightarrow B

4.4.3.17 Le quantificateur universel (forall)

Discussion

L'élément forall représente le quantificateur logique universel. On doit l'utiliser en conjonction avec une ou plusieurs variables liées, un élément condition optionnel et une assertion qui devrait prendre la forme d'un élément apply. Dans MathML 1.0, l'élément reln y était également admis : cet usage est maintenant déconseillé.

L'élément forall admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément forall est un quantificateur (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemples

Le premier exemple code une identité simple :

<apply>
  <forall/>
  <bvar><ci> x </ci></bvar>
  <apply><eq/>
    <apply>
      <minus/><ci> x </ci><ci> x </ci>
    </apply>
    <cn>0</cn>
  </apply>
</apply>

Le deuxième exemple plus évolué fait appel à un élément condition optionnel :

<apply>
  <forall/>
  <bvar><ci> p </ci></bvar>
  <bvar><ci> q </ci></bvar>
  <condition>
    <apply><and/>
      <apply><in/><ci> p </ci><rationals/></apply>
      <apply><in/><ci> q </ci><rationals/></apply>
      <apply><lt/><ci> p </ci><ci> q </ci></apply>
    </apply>
  </condition>
  <apply><lt/>
      <ci> p </ci>
      <apply>
          <power/>
        <ci> q </ci>
        <cn> 2 </cn>
      </apply>
  </apply>
</apply>

Le troisième exemple utilise à la fois les quantificateurs forall et exists :

<apply>
  <forall/>
  <bvar><ci> n </ci></bvar>
  <condition>
    <apply><and/>
      <apply><gt/><ci> n </ci><cn> 0 </cn></apply>
      <apply><in/><ci> n </ci><integers/></apply>
    </apply>
  </condition>
  <apply>
    <exists/>
    <bvar><ci> x </ci></bvar>
    <bvar><ci> y </ci></bvar>
    <bvar><ci> z </ci></bvar>
    <condition>
      <apply><and/>
        <apply><in/><ci> x </ci><integers/></apply>
        <apply><in/><ci> y </ci><integers/></apply>
        <apply><in/><ci> z </ci><integers/></apply>
      </apply>
    </condition>
    <apply>
      <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>
    </apply>
  </apply>
</apply>

errata E01

Rendu par défaut

4.4.3.18 Le quantificateur existentiel (exists)

Discussion

L'élément exists représente le quantificateur logique existentiel. On doit l'utiliser en conjonction avec une ou plusieurs variables liées, un élément condition optionnel et une assertion qui peut prendre la forme soit d'un élément apply, soit d'un élément reln.

L'élément exists admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément exists est un quantificateur (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemple

L'exemple suivant code le sens de l'expression il existe x tel que f(x) =  0 :

<apply>
  <exists/>
  <bvar><ci> x </ci></bvar>
  <apply><eq/>
    <apply>
      <fn><ci> f </ci></fn>
      <ci> x </ci>
    </apply>
    <cn>0</cn>
  </apply>
</apply>
Rendu par défaut

\exists x: f(x)=0

4.4.3.19 La valeur absolue (abs)

Discussion

L'élément abs représente la valeur absolue d'une quantité réelle ou le module d'une quantité complexe.

L'élément abs admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément abs est un opérateur arithmétique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple

L'exemple suivant code la valeur absolue de x :

<apply>
  <abs/>
  <ci> x </ci>
</apply>
Rendu par défaut

|x|

4.4.3.20 La conjugaison complexe (conjugate)

Discussion

L'élément conjugate représente la conjuguée complexe d'une quantité complexe.

L'élément conjugate admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément conjugate est un opérateur artithmétique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple

L'exemple suivant code la conjugaison de x + i y :

<apply>
  <conjugate/>
  <apply>
    <plus/>
    <ci> x </ci>
    <apply><times/>
      <cn> &ImaginaryI; </cn>
      <ci> y </ci>
    </apply>
  </apply>
</apply>
Rendu par défaut

\overline{x + \ii y}

4.4.3.21 L'argument (arg)

Discussion

L'opérateur arg (introduit dans MathML 2.0) donne l'argument d'un nombre complexe, c'est-à-dire l'angle (en radians) par rapport à l'axe réel positif. Les nombres réels négatifs ont un argument égal à \pi.

L'élément arg admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément arg est un opérateur arithmétique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple

L'exemple suivant code l'opération argument sur x + i y :

<apply>
  <arg/>
  <apply><plus/>
    <ci> x </ci>
    <apply><times/>
      <cn> &ImaginaryI; </cn>
      <ci> y </ci>
    </apply>
  </apply>
</apply>
Rendu par défaut

\arg(x + \ii y)

4.4.3.22 La partie réelle (real)

Discussion

L'opérateur real (introduit dans MathML 2.0) donne la partie réelle d'un nombre complexe, c'est-à-dire le composant x dans x + i y.

L'élément real admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément real est un opérateur arithmétique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple

L'exemple suivant code l'opération real sur x + i y :

<apply>
  <real/>
  <apply><plus/>
    <ci> x </ci>
    <apply><times/>
      <cn> &ImaginaryI; </cn>
      <ci> y </ci>
    </apply>
  </apply>
</apply>

Un système d'évaluation compatible MathML devrait retourner le composant x convenablement codé.

Rendu par défaut

\Re(x + \ii y)

4.4.3.23 La partie imaginaire (imaginary)

Discussion

L'opérateur imaginary (introduit dans MathML 2.0) donne la partie imaginaire d'un nombre complexe, c'est-à-dire le composant y dans x + i y.

L'élément imaginary admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément imaginary est un opérateur arithmétique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple

L'exemple suivant code l'opération imaginary sur x + i y.

<apply>
  <imaginary/>
  <apply><plus/>
    <ci> x </ci>
    <apply><times/>
      <cn> &ImaginaryI; </cn>
      <ci> y </ci>
    </apply>
  </apply>
</apply>

Un système d'évaluation compatible MathML devrait retourner le composant y convenablement codé.

Rendu par défaut

\Im(x + \ii y)

4.4.3.24 Le plus petit commun multiple (lcm)

Discussion

L'élément lcm (introduit dans MathML 2.0) sert à indiquer le plus petit commun multiple parmi ses arguments.

L'élément lcm admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément lcm est un opérateur n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply> <lcm/>
  <ci> a </ci>
  <ci> b </ci>
  <ci> c </ci>
</apply>

Pour a = 2, b = 4, c = 6, cela s'évaluerait à 12.

Rendu par défaut

\mathrm{lcm}(a, b, c)

Ce rendu par défaut est spécifique à un environnement en français : d'autres environnements peuvent avoir des rendus différents.

4.4.3.25 L'arrondi inférieur (floor)

Discussion

L'élément floor (introduit dans MathML 2.0) sert à indiquer l'opérateur d'arrondi inférieur (vers l'infini négatif).

L'élément floor admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément floor est un opérateur unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply> <floor/>
  <ci> a </ci>
</apply>

Pour a = 15.015, cela s'évaluerait à 15.

<apply> <forall/>
  <bvar><ci> a </ci></bvar>
  <apply><and/>
    <apply><leq/>
	  <apply><floor/>
		<ci>a</ci>
	  </apply>
	  <ci>a</ci>
	</apply>    
    <apply><lt/>
      <ci>a</ci>
	  <apply><plus/>
	    <apply><floor/>
		  <ci>a</ci>
		</apply>
		<cn>1</cn>
	  </apply>
	</apply>
  </apply>
</apply>
Rendu par défaut

\lfloor{a}\rfloor

4.4.3.26 L'arrondi supérieur (ceiling)

Discussion

L'élément ceiling (introduit dans MathML 2.0) sert à indiquer l'opérateur d'arrondi supérieur (vers l'infini positif).

L'élément ceiling admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément ceiling est un opérateur unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply> <ceiling/>
  <ci> a </ci>
</apply>

Pour a = 15.015, cela s'évaluerait à 16.

<apply> <forall/>
  <bvar><ci> a </ci></bvar>
  <apply><and/>
    <apply><lt/>
	  <apply><minus/>
	    <apply><ceiling/>
		  <ci>a</ci>
		</apply>
		<cn>1</cn>
	  </apply>
      <ci>a</ci>
	</apply>
    <apply><leq/>
	  <ci>a</ci>
	  <apply><ceiling/>
		<ci>a</ci>
	  </apply>
	</apply>    
  </apply>
</apply>
Rendu par défaut

\lceil{a}\rceil

4.4.4 Les relations

4.4.4.1 Égal à (eq)

Discussion

L'élément eq est l'opérateur de relation égal à.

L'élément eq admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément equals est une relation n-aire (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemple
<apply>
  <eq/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 5.5 et b = 6, cela s'évaluerait à false.

Rendu par défaut

a = b

4.4.4.2 Différent de (neq)

Discussion

L'élément neq est l'opérateur de relation non égal à.

L'élément neq admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément neq est une relation binaire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <neq/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 5.5 et b = 6, cela s'évaluerait à true.

Rendu par défaut

a \neq b

4.4.4.3 Supérieur à (gt)

Discussion

L'élément gt est l'opérateur de relation supérieur à.

L'élément gt admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément gt est une relation n-aire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <gt/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 5.5 et b = 6, cela s'évaluerait à false.

Rendu par défaut

a > b

4.4.4.4 Inférieur à (lt)

Discussion

L'élément lt est l'opérateur de relation inférieur à.

L'élément lt admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément lt est une relation n-aire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <lt/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 5.5 et b = 6, cela s'évaluerait à true.

Rendu par défaut

a < b

4.4.4.5 Supérieur ou égal à (geq)

Discussion

L'élément geq est l'opérateur de relation supérieur ou égal à.

L'élément geq admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément geq est une relation n-aire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <geq/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 5.5 et b = 5.5, cela s'évaluerait àtrue.

Rendu par défaut

a \geq b

4.4.4.6 Inférieur ou égal à (leq)

Discussion

L'élément leq est l'opérateur de relation inférieur ou égal à.

L'élément leq admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément leq est une relation n-aire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <leq/>
  <ci> a </ci>
  <ci> b </ci>
</apply>

Pour a = 5.4 et b = 5.5, cela s'évaluerait à true.

Rendu par défaut

a \leq b

4.4.4.7 Équivalent à (equivalent)

Discussion

L'élément equivalent est l'opérateur relationnel d'équivalent à.

L'élément equivalent admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément equivalent est une relation n-aire (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemple
<apply>
  <equivalent/>
  <ci> a </ci>
  <apply>
    <not/>
    <apply> <not/> <ci> a </ci> </apply>
  </apply>
</apply>

Cela produit la valeur de vérité true pour toutes les valeurs de a.

Rendu par défaut

a \equiv \neg(\neg a)

4.4.4.8 Approximativement égal à (approx)

Discussion

L'élément approx est l'opérateur de relation approximativement égal à. C'est un opérateur de relation générique et aucune précision arithmétique particulière n'est impliquée.

L'élément approx admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément approx est une relation binaire (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemple
<apply>
  <approx/>
  <cn type="rational"> 22 <sep/> 7 </cn>
  <cn type="constant"> &pi; </cn>
</apply>
Rendu par défaut

a \approx b

4.4.4.9 Est facteur de (factorof)

Discussion

L'élément factorof est l'élément opérateur de relation sur deux entiers a et b indiquant si l'un est un facteur entier de l'autre.

L'élément factorof admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément factorof est un opérateur de relation binaire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <factorof/>
    <ci> a </ci>
    <ci> b </ci>
</apply>
Rendu par défaut

a | b

4.4.5 Le calcul et le calcul vectoriel

4.4.5.1 L'intégration (int)

Discussion

L'élément int est l'élément opérateur d'une intégrale. La limite inférieure, la limite supérieure et la variable liée sont données respectivement par les sous-éléments (optionnels) lowlimit, uplimit et bvar dans l'élément apply englobant. La fonction à intégrer est aussi définie comme sous-élément de l'élément apply englobant.

On peut indiquer le domaine d'intégration en utilisant soit un élément interval, soit un élément condition. Auxquels cas, si on attend une variable d'intégration liée, on doit la définir explicitement. (La condition peut impliquer plusieurs symboles).

L'élément int admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément int est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemples

Cet exemple définit une limite inférieur, une limite supérieure et une variable liée :

<apply>
  <int/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <lowlimit>
    <cn> 0 </cn>
  </lowlimit>
  <uplimit>
    <ci> a </ci>
  </uplimit>
  <apply>
    <ci> f </ci>
    <ci> x </ci>
  </apply>
</apply>

Cet exemple définit le domaine d'intégration avec un élément interval :

<apply>
  <int/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <interval>
    <ci> a </ci>
    <ci> b </ci>
  </interval>
  <apply><cos/>
    <ci> x </ci>
  </apply>
</apply>

Enfin, cet exemple définit le domaine d'intégration avec un élément condition :

<apply>
  <int/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <condition>
    <apply><in/>
      <ci> x </ci>
      <ci type="set"> D </ci>
    </apply>
  </condition>
  <apply><ci type="fn"> f </ci>
    <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

\int_0^a f(x) \,\diffd x

\int_a^b \cos x \,\diffd x

\int_{x \in D} f(x) \,\diffd x

4.4.5.2 La différenciation (diff)

Discussion

L'élément diff est l'élément opérateur de différenciation des fonctions à une seule variable. On peut l'appliquer directement à une fonction réelle, telles que sinus ou cosinus, en indiquant de ce fait une fonction qui est la dérivée de la fonction originale, ou on peut l'appliquer à une expression faisant intervenir une seule variable, telles que sin(x), cos(x), ou un polynôme en x. Pour une expression, la variable réelle est désignée par un élément bvar, qui est un sous-élément de l'élément conteneur apply. L'élément bvar peut aussi contenir un élément degree pour indiquer l'ordre de la dérivée à effectuer.

L'élément diff admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément diff est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemples

La dérivée d'une fonction f (souvent représentée par f') peut s'écrire :

<apply>
  <diff/>
  <ci> f </ci>
</apply>

On peut écrire la dérivée par rapport à x d'une expression en x, telle que f (x) :

<apply>
  <diff/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <apply><ci type="fn"> f </ci>
    <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

f\,'

\frac{\diffd f(x)}{\diffd x}

4.4.5.3 La différenciation partielle (partialdiff)

Discussion

L'élément partialdiff est l'élément opérateur de différenciation partielle des fonctions ou des expressions algébriques à plusieurs variables.

Pour les expressions algébriques, les variables liées sont données par des éléments bvar, qui sont des sous-éléments de l'élément conteneur apply. L'élément bvar peut aussi contenir un élément degree pour indiquer l'ordre de la dérivée partielle à effectuer avec cette variable.

Pour une expression, la variable réelle est désignée par un élément bvar, qui est un sous-élément de l'élément conteneur apply. L'élément bvar peut aussi contenir un élément degree pour indiquer l'ordre de la dérivée à effectuer.

L'utilisation d'un élément degree au premier niveau, c'est-à-dire comme sous-élément de l'élément conteneur apply et sans élément bvar associé, indique un degré de différenciation total.

Pour la différenciation partielle d'une fonction, l'élément conteneur apply accueille deux sous-éléments : en premier, une liste d'indices dont les positions indiquent quelles coordonnées sont concernées dans la construction des dérivées partielles et, en second, la fonction en question à différencier partiellement. Les coordonnées peuvent se répéter.

L'élément partialdiff admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément partialdiff est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemples
<apply><partialdiff/>
 <bvar><ci> x </ci><degree><ci> m </ci></degree></bvar>
 <bvar><ci> y </ci><degree><ci> n </ci></degree></bvar>
 <degree><ci> k </ci></degree>
 <apply><ci type="fn"> f </ci>
  <ci> x </ci>
  <ci> y </ci>
 </apply>
</apply>
<apply><partialdiff/>
 <bvar><ci> x </ci></bvar>
 <bvar><ci> y </ci></bvar>
 <apply><ci type="fn"> f </ci>
  <ci> x </ci>
  <ci> y </ci>
 </apply>
</apply>
<apply><partialdiff/>
<list><cn>1</cn><cn>1</cn><cn>3</cn></list>
<ci type="fn">f</ci>
</apply>
Rendu par défaut

\left( \frac{\partial ^{k}}{\partial x^{m}\,\partial y^{n}}\right) f(x,y)

\frac{\partial ^{2}}{\partial x\,\partial y}f(x,y)

D_{1,1,3}(f)

4.4.5.4 La limite inférieure (lowlimit)

Discussion

L'élément lowlimit est l'élément conteneur servant à indiquer la limite inférieure d'un opérateur utilisant des qualificatifs. Par exemple, dans une intégrale, on peut l'utiliser pour définir la limite inférieure de l'intégration. De même, on peut l'utiliser pour définir la limite inférieure de l'index d'une somme ou d'un produit.

La signification de l'élément lowlimit dépend du contexte où il sert. Pour des précisions sur la manière d'utiliser des qualificatifs en conjonction avec les opérateurs qui les admettent, consultez la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

Exemple
<apply>
  <int/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <lowlimit>
    <ci> a </ci>
  </lowlimit>
  <uplimit>
    <ci> b </ci>
  </uplimit>
  <apply><ci type="fn"> f </ci>
     <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

Le rendu par défaut de l'élément lowlimit et son contenu dépend du contexte. Pour l'exemple précédent, il devrait être rendu en indice inférieur par rapport au signe de l'intégrale :

\int_a^b f(x) \, \diffd x

Consultez les descriptions des opérateurs individuels utilisant la construction lowlimit pour avoir les rendus par défaut.

4.4.5.5 La limite supérieure (uplimit)

Discussion

L'élément uplimit est l'élément conteneur servant à indiquer la limite supérieure d'un opérateur utilisant des qualificatifs. Par exemple, dans une intégrale, on peut l'utiliser pour définir la limite supérieure de l'intégration. De même, on peut l'utiliser pour définir la limite supérieure de l'index d'une somme ou d'un produit.

La signification de l'élément uplimit dépend du contexte où il sert. Pour des précisions sur la manière d'utiliser des qualificatifs en conjonction avec les opérateurs qui les admettent, consulter la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

Exemple
<apply>
  <int/>
  <bvar>
     <ci> x </ci>
  </bvar>
  <lowlimit>
     <ci> a </ci>
  </lowlimit>
  <uplimit>
     <ci> b </ci>
  </uplimit>
  <apply><ci type="fn"> f </ci>
     <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

Le rendu par défaut de l'élément uplimit et son contenu dépend du contexte. Pour l'exemple précédent, il devrait être rendu en exposant par rapport au signe de l'intégrale :

\int_a^b f(x) \, \diffd x

Consultez les descriptions des opérateurs individuels utilisant la construction uplimit pour avoir les rendus par défaut.

4.4.5.6 Les variables liées (bvar)

Discussion

L'élément bvar est l'élément conteneur de la variable liée d'une opération. Par exemple, dans une intégrale, il définit la variable d'intégration. Dans une dérivée, il indique la variable par rapport à laquelle la fonction est différenciée. Lorsqu'on utilise l'élément bvar pour qualifier une dérivée, l'élément bvar peut contenir un sous-élément degree qui indique l'ordre de la dérivée par rapport à cette variable. On utilise aussi l'élément bvar pour la variable interne des sommes et des produits et pour la variable liée utilisée avec les quantificateurs universel forall et existentiel exists.

La signification de l'élément bvar dépend du contexte où il sert. Pour des précisions sur la manière d'utiliser des qualificatifs en conjonction avec les opérateurs qui les admettent, consultez la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

Exemples
<apply>
  <diff/>
  <bvar>
    <ci> x </ci>
    <degree>
      <cn> 2 </cn>
    </degree>
  </bvar>
  <apply>
    <power/>
    <ci> x </ci>
    <cn> 4 </cn>
  </apply>
</apply>
<apply>
  <int/>
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply><in/><ci> x </ci><ci> D </ci></apply>
  </condition>
  <apply><ci type="fn"> f </ci>
    <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

Le rendu par défaut de l'élément bvar et son contenu dépend du contexte. Pour l'exemple précédent, il devrait être rendu en tant que x dans le dx de l'intégrale et que x dans le dénominateur du symbole de la dérivée, respectivement :

\frac{\diffd x^4}{\diffd x^2}

\int_{x \in D} f(x) \, \diffd x

Remarquez, dans le cas de la dérivée, que le rendu par défaut du sous-élément degree de bvar est celui d'un exposant.

Consultez les descriptions des opérateurs individuels utilisant la construction bvar pour connaître les rendus par défaut

4.4.5.7 Le degré (degree)

Discussion

L'élément degree est l'élément conteneur du degré (ou de l'ordre) d'une opération. Un certain nombre de constructions mathématiques sont constituées en familles, tels que les dérivées et les moments. Au lieu d'introduire des éléments spéciaux pour chacune de ces familles, MathML utilise une seule construction générale : l'élément degree dans cette notion d'ordre.

La signification de l'élément degree dépend du contexte où il sert. Pour des précisions sur la manière d'utiliser des qualificatifs en conjonction avec les opérateurs qui les admettent, consultez la section 4.2.3.2 Les opérateurs admettant des qualificatifs.

Exemple
<apply>
  <partialdiff/>
  <bvar>
    <ci> x </ci>
    <degree>
      <ci> n </ci>
    </degree>
  </bvar>
  <bvar>
    <ci> y </ci>
    <degree>
      <ci> m </ci>
    </degree>
  </bvar>
  <apply><sin/>
    <apply> <times/>
      <ci> x </ci>
      <ci> y </ci>
    </apply>
  </apply>
</apply>
Rendu par défaut

Le rendu par défaut de l'élément degree et son contenu dépend du contexte. Pour l'exemple précédent, les éléments degree seraient rendus comme des exposants dans les symboles de différenciation :

\frac{\partial^{n+m}}{\partial x^n \partial y^m} \sin(xy)

Consultez les descriptions des opérateurs individuels utilisant la construction degree pour connaître les rendus par défaut.

4.4.5.8 La divergence (divergence)

Discussion

L'élément divergence est l'opérateur de divergence du calcul vectoriel, souvent appelé div.

L'élément divergence admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément divergence est un opérateur de calcul vectoriel (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <divergence/>
  <ci> a </ci>
</apply>
Rendu par défaut

\mathop{\mathrm{div}} a

4.4.5.9 Le gradient (grad)

Discussion

L'élément grad est l'opérateur de gradient du calcul vectoriel, souvent appelé grad.

L'élément grad admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément grad est un opérateur de calcul unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <grad/>
  <ci> f</ci>
</apply>

f, par exemple, est une fonction scalaire à trois variables réelles.

Rendu par défaut

\mathop{\mathrm{grad}} f

4.4.5.10 La rotation (curl)

Discussion

L'élément curl est l'opérateur de rotation du calcul vectoriel.

L'élément curl admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément curl est un opérateur de calcul unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <curl/>
  <ci> a </ci>
</apply>

a, par exemple, est un champs vectoriel.

Rendu par défaut

\mathop{\mathrm{curl}} a

4.4.5.11 L'opérateur laplacien (laplacian)

Discussion

L'élément laplacian est l'opérateur laplacien du calcul vectoriel.

L'élément laplacian admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément laplacian est un opérateur de calcul unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <eq/>
  <apply><laplacian/>
    <ci> f </ci>
  </apply>
  <apply>
    <divergence/>
    <apply><grad/>
      <ci> f </ci>
    </apply>
  </apply>
</apply>

f, par exemple, est une fonction scalaire à trois variables réelles.

Rendu par défaut

\nabla^2 f

4.4.6 La théorie des ensembles

4.4.6.1 Les ensembles (set)

Discussion

L'élément set est l'élément conteneur pour construire un ensemble d'éléments. On peut définir les éléments d'un ensemble soit en les listant explicitement, soit en utilisant des éléments bvar et condition.

L'élément set est un élément constructeur (cf. la section 4.2.2.2 Les constructeurs).

Exemples
<set>
  <ci> b </ci>
  <ci> a </ci>
  <ci> c </ci>
</set>

Ce code construit l'ensemble {b, a, c}

<set>
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply><and/>
      <apply><lt/>
        <ci> x </ci>
        <cn> 5 </cn>
      </apply>
      <apply><in/>
        <ci> x </ci>
        <naturalnumbers/>
      </apply>
    </apply>
  </condition>
  <ci> x </ci>
</set>

Ce code construit l'ensemble de tous les nombres naturels inférieurs à 5, c.à.d. l'ensemble {0, 1, 2, 3, 4}.

Rendu par défaut

4.4.6.2 Les listes (list)

Discussion

L'élément list est l'élément conteneur pour construire une liste d'éléments. On peut définir les éléments soit en les listant explicitement, soit en utilisant des éléments bvar et condition.

Les listes diffèrent des ensembles en cela que leurs éléments ont un ordre explicite. Deux ordres sont reconnus : l'ordre lexicographique et l'ordre numérique. Le type d'ordre à utiliser est défini par l'attribut order.

L'élément list est un élément constructeur (cf. la Section 4.2.2.2 [Les constructeurs]).

Exemples
<list>
  <ci> a </ci>
  <ci> b </ci>
  <ci> c </ci>
</list>
<list order="numeric">
  <bvar><ci> x </ci></bvar>
  <condition>
    <apply><lt/>
      <ci> x </ci>
      <cn> 5 </cn>
    </apply>
  </condition>
  <ci> x </ci>
</list>
Rendu par défaut

4.4.6.3 L'union (union)

Discussion

L'élément union est l'opérateur d'union ou de réunion de deux ensembles ou plus en théorie des ensembles.

L'élément union admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément union est un opérateur d'ensemble n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <union/>
  <ci> A </ci>
  <ci> B </ci>
</apply>
Rendu par défaut

A \cup B

4.4.6.4 L'intersection (intersect)

Discussion

L'élément intersect est l'opérateur d'intersection ou de rencontre de deux ensembles ou plus en théorie des ensembles.

L'élément intersect admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément intersect est un opérateur d'ensemble n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <intersect/>
  <ci type="set"> A </ci>
  <ci type="set"> B </ci>
</apply>
Rendu par défaut

A \cap B

4.4.6.5 L'inclusion dans un ensemble (in)

Discussion

L'élément in est l'opérateur de relation utilisé en théorie des ensemble pour l'inclusion (est dans ou est un membre de).

L'élément in admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément in est une relation d'ensemble binaire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <in/>
  <ci> a </ci>
  <ci type="set"> A </ci>
</apply>
Rendu par défaut

a \in A

4.4.6.6 L'exclusion d'un ensemble (notin)

Discussion

L'élément notin est l'opérateur de relation utilisé en théorie des ensembles pour l'exclusion (n'est pas dans ou n'est pas un membre de).

L'élément notin admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément notin est une relation d'ensemble binaire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <notin/>
  <ci> a </ci>
  <ci> A </ci>
</apply>
Rendu par défaut

a \notin A

4.4.6.7 Le sous-ensemble (subset)

Discussion

L'élément subset est l'opérateur de relation utilisé en théorie des ensembles pour le confinement (est un sous-ensemble de).

L'élément subset admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément subset est une relation d'ensemble n-aire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <subset/>
  <ci> A </ci>
  <ci> B </ci>
</apply>
Rendu par défaut

A \subseteq B

4.4.6.8 La partie propre (prsubset)

Discussion

L'élément prsubset est l'opérateur de relation utilisé en théorie des ensembles pour la partie propre d'un ensemble (est la partie propre de).

L'élément prsubset admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément subset est une relation d'ensemble n-aire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <prsubset/>
  <ci> A </ci>
  <ci> B </ci>
</apply>
Rendu par défaut

A \subset B

4.4.6.9 Le non-sous-ensemble (notsubset)

Discussion

L'élément notsubset est l'opérateur de relation n'est pas un sous-ensemble de en théorie des ensembles.

L'élément notsubset admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément notsubset est une relation d'ensemble binaire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <notsubset/>
  <ci> A </ci>
  <ci> B </ci>
</apply>
Rendu par défaut

A \not\subset B

4.4.6.10 La non-partie propre (notprsubset)

Discussion

L'élément notprsubset est l'opérateur de relation n'est pas la partie propre de en théorie des ensembles.

L'élément notprsubset admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément notprsubset est une relation d'ensemble binaire (cf. la section 4.2.4 Les relations).

Exemple
<apply>
  <notprsubset/>
  <ci> A </ci>
  <ci> B </ci>
</apply>
Rendu par défaut

A \nsubseteq B

4.4.6.11 La différence d'ensemble (setdiff)

Discussion

L'élément setdiff est l'élément opérateur de différence de deux ensembles en théorie des ensembles.

L'élément setdiff admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément setdiff est un opérateur d'ensemble binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <setdiff/>
  <ci> A </ci>
  <ci> B </ci>
</apply>
Rendu par défaut

A \setminus B

4.4.6.12 La cardinalité (card)

Discussion

L'élément card est l'élément opérateur de dimension (ou cardinalité) d'un ensemble.

L'élément card admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément card est un opérateur d'ensemble binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <eq/>
  <apply><card/>
    <ci> A </ci>
  </apply>
  <ci> 5 </ci>
</apply>

A est un ensemble de cinq éléments.

Rendu par défaut

| A | = 5

4.4.6.13 Le produit cartésien (cartesianproduct)

Discussion

L'élément cartesianproduct est l'élément opérateur de produit cartésien de deux ensembles ou plus. Si A et B sont deux ensembles, alors le produit cartésien de A et B est l'ensemble de tous les couples (ab), où a appartient à A et b à B.

L'élément cartesianproduct admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément cartesianproduct est un opérateur d'ensemble n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
  <apply><cartesianproduct/>
    <ci> A </ci>
    <ci> B </ci>
  </apply>
  <apply><cartesianproduct/>
    <reals/>
    <reals/>
    <reals/>
  </apply>
Rendu par défaut

A \times B

\mathbb{R} \times \mathbb{R} \times \mathbb{R}

\mathbb{R}^3

4.4.7 Les suites et les séries

4.4.7.1 La somme (sum)

Discussion

L'élément sum désigne l'opérateur de somme. On peut définir les limites inférieure et supérieure de l'index d'une somme au moyen des éléments lowlimit et uplimit. On peut définir des domaines plus généraux pour les indices en utilisant un élément condition impliquant les variables liées. L'index de la somme est défini par un élément bvar.

L'élément sum admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément sum est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemples
<apply>
  <sum/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <lowlimit>
    <ci> a </ci>
  </lowlimit>
  <uplimit>
    <ci> b </ci>
  </uplimit>
  <apply><ci type="fn"> f </ci>
    <ci> x </ci>
  </apply>
</apply>

<apply>
  <sum/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <condition>
    <apply> <in/>
      <ci> x </ci>
      <ci type="set"> B </ci>
    </apply>
  </condition>
  <apply><ci type="fn"> f </ci>
    <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

\sum_{x=a}^b f(x)

\sum_{x \in B} f(x)

4.4.7.2 Le produit (product)

Discussion

L'élément product désigne l'opérateur de produit. On peut définir les limites inférieure et supérieure de l'index d'un produit au moyen des éléments lowlimit et uplimit. On peut définir des domaines plus généraux pour les indices en utilisant un élément condition impliquant les variables liées. L'index du produit est défini par un élément bvar.

L'élément product admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément product est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemples
<apply>
  <product/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <lowlimit>
    <ci> a </ci>
  </lowlimit>
  <uplimit>
    <ci> b </ci>
  </uplimit>
  <apply><ci type="fn"> f </ci>
    <ci> x </ci>
  </apply>
</apply>

<apply>
  <product/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <condition>
    <apply> <in/>
      <ci> x </ci>
      <ci type="set"> B </ci>
    </apply>
  </condition>
  <apply><ci type="fn"> f </ci>
    <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

\prod_{x=a}^b f(x)

\prod_{x \in B} f(x)

4.4.7.3 La limite (limit)

Discussion

L'élément limit représente l'opération consistant à prendre la limite d'une suite. On exprime le point limite en définissant une limite lowlimit et un élément bvar, ou en définissant une condition sur une ou plusieurs variables liées.

L'élément limit admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément limit est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemples
<apply>
  <limit/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <lowlimit>
    <cn> 0 </cn>
  </lowlimit>
  <apply><sin/>
    <ci> x </ci>
  </apply>
</apply>
<apply>
  <limit/>
  <bvar>
    <ci> x </ci>
  </bvar>
  <condition>
    <apply>
      <tendsto type="above"/>
      <ci> x </ci>
      <ci> a </ci>
    </apply>
  </condition>
  <apply><sin/>
     <ci> x </ci>
  </apply>
</apply>
Rendu par défaut

\lim_{x \to 0} \sin x

\lim_{x \searrow a} \sin x

4.4.7.4 Tend vers (tendsto)

Discussion

L'élément tendsto sert à exprimer la relation qu'une quantité tend vers une valeur définie.

L'élément tendsto admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément tendsto est un opérateur de relation binaire (cf. la section 4.2.4 Les relations).

Exemples
<apply>
  <tendsto type="above"/>
  <apply>
    <power/>
    <ci> x </ci>
    <cn> 2 </cn>
  </apply>
  <apply>
    <power/>
    <ci> a </ci>
    <cn> 2 </cn>
  </apply>
</apply>

Pour l'expression (xy\rightarrow (f(xy), g(xy)), on pourrait utiliser des vecteurs :

<apply>
  <tendsto/>
  <vector>
     <ci> x </ci>
     <ci> y </ci>
  </vector>
  <vector>
    <apply><ci type="fn"> f </ci>
      <ci> x </ci>
      <ci> y </ci>
    </apply>
    <apply><ci type="fn"> g </ci>
      <ci> x </ci>
      <ci> y </ci>
    </apply>
  </vector>
</apply>
Rendu par défaut

x^{2} \searrow a^{2}

(x, y) \rightarrow (f(x, y), g(x, y))

4.4.8 Les fonctions classiques élémentaires

4.4.8.1 Les fonctions trigonométriques courantes

Les noms des fonctions trigonométriques courantes reconnus par MathML sont listés ci-dessous. Leurs interprétations étant très connues, elles sont traitées ensemble.

sin cos tan
sec csc cot
sinh cosh tanh
sech csch coth
arcsin arccos arctan
arccosh arccot arccoth
arccsc arccsch arcsec
arcsech arcsinh arctanh
Discussion

Ces éléments opérateurs désignent les fonctions trigonométriques standards.

Tous ces éléments admettent les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Ce sont tous des opérateurs trigonométriques unaires (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemples
<apply>
  <sin/>
  <ci> x </ci>
</apply>
<apply>
  <sin/>
  <apply>
    <plus/>
    <apply><cos/>
      <ci> x </ci>
    </apply>
    <apply>
      <power/>
      <ci> x </ci>
      <cn> 3 </cn>
    </apply>
  </apply>
</apply>
Rendu par défaut

4.4.8.2 L'exponentiel (exp)

Discussion

L'élément exp représente la fonction exponentielle associée au symétrique de la fonction ln. En particulier, exp(1) vaut approximativement 2.718281828.

L'élément exp admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément exp est un opérateur arithmétique unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <exp/>
  <ci> x </ci>
</apply>
Rendu par défaut

\eulere^x

4.4.8.3 Le logarithme naturel (ln)

Discussion

L'élément ln représente la fonction logarithme naturel.

L'élément ln admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément ln est un opérateur de calcul unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <ln/>
  <ci> a </ci>
</apply>

Si a = e (où e représente la base des logarithmes naturels), cela produira la valeur 1.

Rendu par défaut

\ln a

4.4.8.4 Le logarithme (log)

Discussion

L'élément log est l'opérateur qui renvoie un logarithme dans une base donnée. On peut définir sa base au moyen d'un élément logbase, le premier élément qui devrait suivre l'élément log, c.à.d. le deuxième sous-élément de l'élément apply englobant. Si l'élément logbase n'est pas présent, on suppose la base 10 par défaut.

L'élément log admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément log peut s'utiliser soit comme un opérateur admettant des qualificatifs, soit comme un opérateur de calcul unaire (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs).

Exemple
<apply>
  <log/>
  <logbase>
    <cn> 3 </cn>
  </logbase>
  <ci> x </ci>
</apply>

Ce code représente le logarithme de x en base 3. On devrait plutôt utiliser l'élément ln pour les logarithmes naturels en base e.

Rendu par défaut

\log_3 x

4.4.9 Les statistiques

4.4.9.1 La moyenne (mean)

Discussion

L'élément mean est l'élément opérateur représentant une moyenne (N.d.T. mean ou average).

L'élément mean admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément mean est un opérateur n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

<apply>
  <mean/>
  <ci> X </ci>
</apply>
Rendu par défaut

\bar{X} ou \langle X \rangle

4.4.9.2 L'écart-type (sdev)

Discussion

L'élément sdev est l'élément opérateur représentant l'écart-type statistique.

L'élément sdev admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément sdev est un opérateur n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

<apply>
  <sdev/>
  <ci> X </ci>
</apply>
Rendu par défaut

\sigma(X)

4.4.9.3 La variance (variance)

Discussion

L'élément variance est l'élément opérateur représentant la variance statistique.

L'élément variance admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément variance est un opérateur n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

<apply>
  <variance/>
  <ci> X </ci>
</apply>
Rendu par défaut

\sigma(X)^2

4.4.9.4 La médiane (median)

Discussion

L'élément median est l'élément opérateur représentant la médiane statistique.

L'élément median admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément median est un opérateur n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

<apply>
  <median/>
  <ci> X </ci>
</apply>
Rendu par défaut

\mathrm{median}(X)

4.4.9.5 Le mode (mode)

Discussion

L'élément mode est l'élément opérateur représentant le mode statistique.

L'élément mode admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément mode est un opérateur n-aire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

<apply>
  <mode/>
  <ci> X </ci>
</apply>
Rendu par défaut

\mathrm{mode}(X)

4.4.9.6 Le moment (moment)

Discussion

L'élément moment représente l'opérateur moment statistique. Utilisez le qualificatif degree pour le n dans le moment nème (ou moment d'ordre n) et le qualificatif momentabout pour le p dans le moment par rapport au point p.

L'élément moment admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément moment est un opérateur admettant des qualificatifs (cf. la section 4.2.3.2 Les opérateurs admettant des qualificatifs). Le moment d'ordre trois de la distribution X par rapport au point p s'écrit :

<apply>
  <moment/>
  <degree>
    <cn> 3 </cn>
  </degree>
  <momentabout>
    <ci> p </ci>
  </momentabout>
  <ci> X </ci>
</apply>
Rendu par défaut

\langle X^3 \rangle

4.4.9.7 Le point de moment (momentabout)

Discussion

L'élément momentabout est un élément qualificatif employé avec l'élément moment pour représenter des moments statistiques. Utilisez le qualificatif momentabout pour le p dans le moment par rapport à p.

L'élément momentabout admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

Le moment d'ordre trois de la distribution X par rapport au point p s'écrit :

<apply>
  <moment/>
  <degree>
    <cn> 3 </cn>
  </degree>
  <momentabout>
    <ci> p </ci>
  </momentabout>
  <ci> X </ci>
</apply>
Rendu par défaut

\langle X^3 \rangle

4.4.10 L'algèbre linéaire

4.4.10.1 Les vecteurs (vector)

Discussion

L'élément vector est le conteneur d'un vecteur. Ses sous-éléments constituent les composants du vecteur.

Pour les besoins de l'interaction avec les matrices et de la multiplication des matrices, on considère un vecteur comme équivalant à une matrice constituée d'une seule colonne, et la transposée d'un vecteur se comportant comme une matrice constituée d'une seule ligne.

Exemple

L'élément vector est un élément constructeur (cf. la section 4.2.2.2 Les constructeurs).

<vector>
  <cn> 1 </cn>
  <cn> 2 </cn>
  <cn> 3 </cn>
  <ci> x </ci>
</vector>
Rendu par défaut

\left(\begin{array}{c} 1 \\ 2 \\ 3 \\ x \end{array} \right)

(1, 2, 3, x)

4.4.10.2 Les matrices (matrix)

Discussion

L'élément matrix est le conteneur de lignes de matrice représentées par des éléments matrixrow. Les éléments matrixrow contiennent les éléments de la matrice.

Exemple

L'élément matrix est un élément constructeur (cf. la section 4.2.2.2 Les constructeurs).

<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>
Rendu par défaut

A = \left(\begin{array}{ccc} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \end{array} \right)

4.4.10.3 Les lignes de matrice (matrixrow)

Discussion

L'élément matrixrow est le conteneur d'une ligne de la matrice.

Exemple

L'élément matrixrow est un élément constructeur (cf. la section 4.2.2.2 Les constructeurs).

<matrixrow>
  <cn> 1 </cn>
  <cn> 2 </cn>
</matrixrow>
<matrixrow>
  <cn> 3 </cn>
  <ci> x </ci>
</matrixrow>
Rendu par défaut

Les lignes de matrice ne sont pas directement rendues hors du contexte d'une matrice.

4.4.10.4 Le déterminant (determinant)

Discussion

L'élément determinant est l'opérateur de construction du déterminant d'une matrice.

L'élément determinant admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément determinant est un opérateur unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

<apply>
  <determinant/>
  <ci type="matrix"> A </ci>
</apply>
Rendu par défaut

\det A

4.4.10.5 La transposée (transpose)

Discussion

L'élément transpose est l'opérateur de construction de la transposée d'une matrice.

L'élément transpose admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément transpose est un opérateur unaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

<apply>
  <transpose/>
  <ci type="matrix"> A </ci>
</apply>
Rendu par défaut

A^{\mathrm{T}}

4.4.10.6 Le sélecteur (selector)

Discussion

L'élément selector est l'opérateur d'indexation des vecteurs, des matrices et des listes. Il accepte un ou plusieurs arguments. Le premier argument identifie le vecteur, la matrice ou la liste sur lesquels la sélection intervient, le deuxième argument et, le cas échéant, les suivants indiquent le type de la sélection qui a lieu.

Lorsqu'on utilise l'élément selector avec un seul argument, on devrait l'interpréter comme donnant la séquence de tous les éléments de la liste, du vecteur ou de la matrice en question. L'ordre des éléments dans la séquence d'une matrice se comprend d'abord par colonne puis par ligne. C'est-à-dire que, pour une matrice a ij ), les indices indiquant une ligne et une colonne, l'ordre serait a 1,1, a 1,2, ... , a 2,1, a 2,2, etc.

Lorsqu'on a trois arguments, le dernier est ignoré pour une liste ou un vecteur, et dans le cas d'une matrice, le deuxième et le troisième arguments indiquent la ligne et la colonne de l'élément sélectionné.

Lorsqu'on a deux arguments et que le premier est une liste (ou un vecteur), le second argument indique un élément dans la liste (ou le vecteur). Avec une matrice et un seul index i défini comme dans :

<apply>
  <selector/>
  <matrix>
    <matrixrow>
      <cn> 1 </cn> <cn> 2 </cn>
    </matrixrow>
    <matrixrow>
      <cn> 3 </cn> <cn> 4 </cn>
    </matrixrow>
  </matrix>
  <cn> 1 </cn>
</apply>

Le sélecteur désigne la ième ligne de la matrice. Dans cet exemple, l'indice sélectionne la ligne suivante :

<matrixrow> <cn> 1 </cn> <cn> 2 </cn> </matrixrow>

L'élément selector admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément selector est classé parmi les opérateurs d'algèbre linéaire n-aires, bien qu'il admette seulement un, deux ou trois arguments.

Exemple
<apply>
  <selector/>
  <ci type="matrix"> A </ci>
  <cn> 3 </cn>
  <cn> 2 </cn>
</apply>
Rendu par défaut

La structure selector est rendue de façon à indiquer quel sous-élément de l'objet parent est sélectionné. Pour les vecteurs et les matrices, la sélection se fait normalement en définissant l'objet parent en même temps que les indices. Par exemple, la sélection :

<apply>
  <selector/>
  <ci type="vector">V</ci>
  <cn> 1 </cn>
</apply>

Elle aurait le rendu par défaut suivant :

V_1

La sélection de l'élément (1,2) d'une matrice 2 par 2 aurait un rendu par défaut comme :

{\left[\begin{array}{cc}1&2\\3&4\end{array}\right]}_{1,2}

4.4.10.7 Le produit vectoriel (vectorproduct)

Discussion

L'élément vectorproduct est l'élément opérateur pour dériver le produit vectoriel de deux vecteurs.

L'élément vectorproduct admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément vectorproduct est un opérateur vectoriel binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <eq/>
  <apply><vectorproduct/>
    <ci type="vector"> A </ci>
    <ci type="vector"> B </ci>
  </apply>
  <apply><times/>
    <ci> a </ci>
    <ci> b </ci>
    <apply><sin/>
      <ci> &theta; </ci>
    </apply>
    <ci type="vector"> N </ci>
  </apply>
</apply>

A et B sont des vecteurs ; N est un vecteur unité orthogonal à A et B ; ab sont les grandeurs de AB ; \theta est l'angle entre A et B.

Rendu par défaut

A \times B = a b \sin\theta N

4.4.10.8 Le produit scalaire (scalarproduct)

Discussion

L'élément scalarproduct est l'élément opérateur pour dériver le produit scalaire de deux vecteurs.

L'élément scalarproduct admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément scalarproduct est un opérateur vectoriel binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <eq/>
  <apply><scalarproduct/>
    <ci type="vector"> A </ci>
    <ci type="vector">B </ci>
  </apply>
  <apply><times/>
    <ci> a </ci>
    <ci> b </ci>
    <apply><cos/>
      <ci> &theta; </ci>
    </apply>
  </apply>
</apply>

A et B sont des vecteurs ; ab sont les grandeurs de AB ; \theta est l'angle entre A et B.

Rendu par défaut

A.B

4.4.10.9 Le produit externe (outerproduct)

Discussion

L'opérateur outerproduct est l'élément opérateur pour dériver le produit externe de deux vecteurs.

L'élément outerproduct admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

L'élément outerproduct est un opérateur vectoriel binaire (cf. la section 4.2.3 Les fonctions, les opérateurs et les qualificatifs).

Exemple
<apply>
  <outerproduct/>
  <ci type="vector">A</ci>
  <ci type="vector">B</ci>
</apply>

A et B sont des vecteurs.

Rendu par défaut

A.B

4.4.11 Les éléments de mappage sémantique

Cette section explique l'usage des éléments de mappage sémantique : semantics, annotation et annotation-xml.

4.4.11.1 Les annotations (annotation)

Discussion

L'élément annotation est le conteneur d'une annotation sémantique dans un format non-XML.

L'élément annotation admet les attributs definitionURL et encoding qui peuvent servir à forcer la sémantique par défaut.

Exemple

L'élément annotation est un élément de mappage sémantique. On l'utilise toujours avec l'élément semantics.

<semantics>
  <apply>
    <plus/>
    <apply><sin/>
      <ci> x </ci>
    </apply>
    <cn> 5 </cn>
  </apply>
  <annotation encoding="TeX">
    \sin x + 5
  </annotation>
</semantics>
Rendu par défaut

Aucun. Un moteur de rendu capable de traiter le type de l'annotation en question peut, en option, utiliser les informations qu'elle contient.

4.4.11.2 Les sémantiques (semantics)

Discussion

L'élément semantics est le conteneur qui permet d'associer des représentations supplémentaires à une structure MathML donnée. L'élément semantics a pour premier sous-élément l'expression annotée, les sous-éléments suivants représentant les annotations. Le type d'annotation associable au moyen de l'élément semantics n'est pas restreint. Par exemple, on peut placer un codage TEX ou une entrée de calcul algébrique dans une annotation.

Les représentations basées sur XML sont englobées dans un élément annotation-xml tandis que les représentations à analyser comme valeurs de type PCDATA le sont dans un élément annotation.

L'élément semantics admet les attributs definitionURL et encoding qui peuvent servir à appeler une source externe, pour toutes ou une partie des informations sémantiques.

Un but important de la structure semantics est d'associer une sémantique spécifique à une présentation particulière, ou des informations de présentation supplémentaire à une structure de contenu. Le rendu par défaut d'un élément semantics est celui par défaut de son premier sous-élément. Si une annotation de présentation MathML est fournie, le moteur de rendu MathML peut, en option, utiliser ces informations pour rendre la structure MathML. C'est typiquement le cas lorsque le premier sous-élément est une structure de contenu MathML et que l'annotation est fournie pour indiquer un rendu préféré différent des rendus par défaut des éléments de contenu.

On peut mettre en vis-à-vis l'utilisation de l'élément semantics pour associer d'autres informations en ligne à une construction MathML et l'utilisation de l'élément csymbol pour appeler des sémantiques externes. Cf. la section 4.4.1.3 Les symboles à définition externe (csymbol).

Exemples

L'élément semantics est un élément de mappage sémantique.

<semantics>
  <apply>
    <plus/>
    <apply>
      <sin/>
      <ci> x </ci>
    </apply>
    <cn> 5 </cn>
  </apply>
  <annotation encoding="Maple">
    sin(x) + 5
  </annotation>
  <annotation-xml encoding="MathML-Presentation">
    ...
    ...
  </annotation-xml>
  <annotation encoding="Mathematica">
    Sin[x] + 5
  </annotation>
  <annotation encoding="TeX">
    \sin x + 5
  </annotation>
  <annotation-xml encoding="OpenMath">
    <OMA xmlns="http://www.openmath.org/OpenMath">
	  <OMS cd="transc1" name="sin"/>
	  <OMI>5</OMI>
    </OMA>
  </annotation-xml>
</semantics>
Rendu par défaut

Le rendu par défaut de l'élément semantics est celui par défaut de son premier sous-élément.

4.4.11.3 Les annotations basées sur XML (annotation-xml)

Discussion

L'élément conteneur annotation-xml sert à contenir des représentations basées sur XML. On l'utilise toujours avec l'élément semantics et son attribut encoding sert à définir le codage utilisé.

L'élément annotation-xml est un élément de mappage sémantique.

Exemple
<semantics>
  <apply>
    <plus/>
    <apply><sin/>
      <ci> x </ci>
    </apply>
    <cn> 5 </cn>
  </apply>
  <annotation-xml encoding="OpenMath">
    <OMA><OMS name="plus" cd="arith1"/>
      <OMA><OMS name="sin" cd="transc1"/>
        <OMV name="x"/>
      </OMA>
      <OMI>5</OMI>
    </OMA>
  </annotation-xml>
</semantics>

Voir également la discussion précédente à propos de l'élément semantics.

Rendu par défaut

Aucun. Un moteur de rendu capable de traiter le type d'annotation en question peut utiliser ces informations.

4.4.12 Les éléments constants et les éléments symboliques

Cette section explique l'emploi des éléments constants et symboliques.

4.4.12.1 Les nombres entiers (integers)

Discussion

L'élément integers représente l'ensemble des nombres entiers.

Exemple
<apply>
  <in/>
  <cn type="integer"> 42 </cn>
  <integers/>
</apply>
Rendu par défaut

42 \in \mathbb{Z}

4.4.12.2 Les nombres réels (reals)

Discussion

L'élément reals représente l'ensemble des nombres réels.

Exemple
<apply>
  <in/>
  <cn type="real"> 44.997 </cn>
  <reals/>
</apply>
Rendu par défaut

44.997 \in \mathbb{R}

4.4.12.3 Les nombres rationnels (rationals)

Discussion

L'élément rationals représente l'ensemble des nombres rationnels.

Exemple
<apply>
  <in/>
  <cn type="rational"> 22 <sep/>7</cn>
  <rationals/>
</apply>
Rendu par défaut

22/7 \in \mathbb{Q}

4.4.12.4 Les nombres naturels (naturalnumbers)

Discussion

L'élément naturalnumbers représente l'ensemble des nombres naturels, c.à.d., les entiers non-négatifs.

Exemple
<apply>
  <in/>
  <cn type="integer">1729</cn>
  <naturalnumbers/>
</apply>
Rendu par défaut

1729 \in \mathbb{N}

4.4.12.5 Les nombres complexes (complexes)

Discussion

L'élément complexes représente l'ensemble des nombres complexes, c.à.d., les nombres ayant une partie réelle et une partie imaginaire.

Exemple
<apply>
  <in/>
  <cn type="complex-cartesian">17<sep/>29</cn>
  <complexes/>
</apply>
Rendu par défaut

17+29\ii \in \mathbb{C}

4.4.12.6 Les nombres premiers (primes)

Discussion

L'élément primes représente l'ensemble des nombres naturels premiers, c.à.d., les entiers supérieurs à 1 n'ayant pas d'autre facteur entier positif qu'eux-mêmes et 1.

Exemple
<apply>
  <in/>
  <cn type="integer">17</cn>
  <primes/>
</apply>
Rendu par défaut

17 \in \mathbb{P}

4.4.12.7 Le e exponentiel (exponentiale)

Discussion

L'élément exponentiale représente la constante mathématique qui est la base exponentielle des logarithmes naturels, notée habituellement e et valant approximativement 2.718281828.

Exemple
<apply> <eq/>
  <apply>
    <ln/>
    <exponentiale/>
  </apply>
  <cn>1</cn>
</apply>
Rendu par défaut

\ln \eulere = 1

4.4.12.8 Le nombre imaginaire i (imaginaryi)

Discussion

L'élément imaginaryi représente la constante mathématique qui est une racine carrée de -1, notée habituellement i.

Exemple
<apply> <eq/>
  <apply>
    <power/>
    <imaginaryi/>
    <cn>2</cn>
  </apply>
  <cn>-1</cn>
</apply>
Rendu par défaut

\ii^2 = -1

4.4.12.9 Pas un nombre (notanumber)

Discussion

L'élément notanumber représente le résultat non défini d'une opération en virgule flottante, appelé aussi parfois NaN.

Exemple
<apply> <eq/>
  <apply>
    <divide/>
    <cn>0</cn>
    <cn>0</cn>
  </apply>
  <notanumber/>
</apply>
Rendu par défaut

0/0 = \mbox{NaN}

4.4.12.10 Vrai (true)

Discussion

L'élément true représente la constante logique de vérité.

Exemple
<apply> <eq/>
  <apply>
    <or/>
    <true/>
    <ci type = "logical">P</ci>
  </apply>
  <true/>
</apply>
Rendu par défaut

\mbox{true} \lor\ P = \mbox{true}

4.4.12.11 Faux (false)

Discussion

L'élément false représente la constante logique de fausseté.

Exemple
<apply> <eq/>
  <apply>
    <and/>
    <false/>
    <ci type = "logical">P</ci>
  </apply>
  <false/>
</apply>
Rendu par défaut

\mbox{false} \land\ P = \mbox{false}

4.4.12.12 L'ensemble vide (emptyset)

Discussion

L'élément emptyset représente l'ensemble vide.

Exemple
  <apply>
    <neq/>
    <integers/>
    <emptyset/>
  </apply>
  
Rendu par défaut

\mathbb{Z} \neq \emptyset

4.4.12.13 Pi (pi)

Discussion

L'élément pi représente la constante mathématique correspondant au rapport de la circonférence d'un cercle à son diamètre, qui vaut approximativement 3.141592653.

Exemple
  <apply>
    <approx/>
    <pi/>
    <cn type = "rational">22<sep/>7</cn>
  </apply>
  
Rendu par défaut

\pi \approx 22/7

4.4.12.14 La constante gamma d'Euler (eulergamma)

Discussion

L'élément eulergamma représente la constante d'Euler valant approximativement 0.5772156649.

Exemple
  <eulergamma/>
Rendu par défaut

\gamma

4.4.12.15 L'infini (infinity)

Discussion

L'élément infinity représente le concept d'infini. L'interprétation exacte dépend du contexte.

Exemple
  <infinity/>
Rendu par défaut

\infty

Table des matières : Le langage de balisage mathématique (MathML) version 2.0
Chapitre précédent : 3 Presentation Markup
Chapitre suivant : 5 La combinaison des balisages de présentation et de contenu