Commit efca64eb authored by Florent Terrones's avatar Florent Terrones
Browse files

2006-11-17 Florent Terrones <terron_f@lrde.epita.fr>

	* data/vaucanson.xsd: Remove the <transducer> tag.
	Change the `generators' attribute to `generatorType'.
	* doc/xml/xml_proposal.tex: Update accordingly.
	* include/vaucanson/xml/xml_chooser.hh,
	* include/vaucanson/xml/xml_chooser.hxx,
	* include/vaucanson/xml/xml_converter.hxx,
	* include/vaucanson/xml/tools.hxx,
	* include/vaucanson/xml/xerces_parser.hxx: Update accordingly. Remove
	the `choose_start_tag' method from xml_chooser.
	* src/tests/xml/label_node_ref.xml,
	* src/tests/xml/trans_ref.xml,
	* src/tests/xml/geometry_ref.xml,
	* src/tests/xml/r_ref.xml,
	* src/tests/xml/z_ref.xml,
	* src/tests/xml/z_min_plus_ref.xml,
	* src/tests/xml/b_ref.xml,
	* src/tests/xml/z_max_plus_ref.xml,
	* src/tests/xml/fmp_ref.xml,
	* src/tests/xml/session_ref.xml,
	* taf-kit/tests/b_to_transpose.xml,
	* taf-kit/tests/t2_u-compose_u2.xml,
	* taf-kit/tests/b_transposed.xml,
	* taf-kit/tests/inverted_t1.xml,
	* taf-kit/tests/t2.xml,
	* taf-kit/tests/u2.xml,
	* taf-kit/tests/non_ambiguous2.xml,
	* taf-kit/tests/ambiguous.xml,
	* taf-kit/tests/non_ambiguous.xml,
	* taf-kit/tests/t1_compose_u1.xml,
	* data/automata/tdc-rw/quot-3-rw.xml,
	* data/automata/tdc-rw/add1-rw.xml,
	* data/automata/b/a1.xml,
	* data/automata/b/b1.xml,
	* data/automata/b/div3base2.xml,
	* data/automata/b/double-3-1.xml,
	* data/automata/b/ladybird-6.xml,
	* data/automata/z/b1.xml,
	* data/automata/z/c1.xml,
	* data/automata/tdc/t1.xml,
	* data/automata/tdc/u1.xml: Update accordingly.
parent d462b15b
2006-11-17 Florent Terrones <terron_f@lrde.epita.fr>
* data/vaucanson.xsd: Remove the <transducer> tag.
Change the `generators' attribute to `generatorType'.
* doc/xml/xml_proposal.tex: Update accordingly.
* include/vaucanson/xml/xml_chooser.hh,
* include/vaucanson/xml/xml_chooser.hxx,
* include/vaucanson/xml/xml_converter.hxx,
* include/vaucanson/xml/tools.hxx,
* include/vaucanson/xml/xerces_parser.hxx: Update accordingly. Remove
the `choose_start_tag' method from xml_chooser.
* src/tests/xml/label_node_ref.xml,
* src/tests/xml/trans_ref.xml,
* src/tests/xml/geometry_ref.xml,
* src/tests/xml/r_ref.xml,
* src/tests/xml/z_ref.xml,
* src/tests/xml/z_min_plus_ref.xml,
* src/tests/xml/b_ref.xml,
* src/tests/xml/z_max_plus_ref.xml,
* src/tests/xml/fmp_ref.xml,
* src/tests/xml/session_ref.xml,
* taf-kit/tests/b_to_transpose.xml,
* taf-kit/tests/t2_u-compose_u2.xml,
* taf-kit/tests/b_transposed.xml,
* taf-kit/tests/inverted_t1.xml,
* taf-kit/tests/t2.xml,
* taf-kit/tests/u2.xml,
* taf-kit/tests/non_ambiguous2.xml,
* taf-kit/tests/ambiguous.xml,
* taf-kit/tests/non_ambiguous.xml,
* taf-kit/tests/t1_compose_u1.xml,
* data/automata/tdc-rw/quot-3-rw.xml,
* data/automata/tdc-rw/add1-rw.xml,
* data/automata/b/a1.xml,
* data/automata/b/b1.xml,
* data/automata/b/div3base2.xml,
* data/automata/b/double-3-1.xml,
* data/automata/b/ladybird-6.xml,
* data/automata/z/b1.xml,
* data/automata/z/c1.xml,
* data/automata/tdc/t1.xml,
* data/automata/tdc/u1.xml: Update accordingly.
2006-11-15 Florent Terrones <terron_f@lrde.epita.fr>
* data/vaucanson.xsd: Change the structure of the semiring description.
......
<automaton name="a1" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
......
<automaton name="b1" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
......
<automaton name="div3base2" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="0"/>
<generator value="1"/>
</monoid>
......
<automaton name="double_ring 3" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
......
<automaton name="ladybird 6" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
<generator value="c"/>
......
<transducer name="T" xmlns="http://vaucanson.lrde.epita.fr">
<automaton name="T" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
<numericalSemiring>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
......@@ -27,5 +27,5 @@
<final state="s1"/>
</transitions>
</content>
</transducer>
</automaton>
<transducer xmlns="http://vaucanson.lrde.epita.fr">
<automaton xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
<numericalSemiring>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
......@@ -29,4 +29,4 @@
<final state="s0"/>
</transitions>
</content>
</transducer>
</automaton>
<transducer name="t1" xmlns="http://vaucanson.lrde.epita.fr">
<automaton name="t1" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="product">
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="product">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="x"/>
<generator value="y"/>
</monoid>
......@@ -28,4 +28,4 @@
<final state="s1"/>
</transitions>
</content>
</transducer>
</automaton>
<transducer name="u1" xmlns="http://vaucanson.lrde.epita.fr">
<automaton name="u1" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="product">
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="product">
<monoid generatorType="letters" type="free">
<generator value="x"/>
<generator value="y"/>
</monoid>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="u"/>
<generator value="v"/>
</monoid>
......@@ -28,4 +28,4 @@
<final state="s1"/>
</transitions>
</content>
</transducer>
</automaton>
<automaton name="b1" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
......
<automaton name="c1" xmlns="http://vaucanson.lrde.epita.fr">
<labelType>
<monoid generators="letters" type="free">
<monoid generatorType="letters" type="free">
<generator value="a"/>
<generator value="b"/>
</monoid>
......
......@@ -5,7 +5,7 @@ xmlns="http://vaucanson.lrde.epita.fr"
elementFormDefault="qualified">
<!--
vaucanson.xsd version 0.3.3
vaucanson.xsd version 0.4
-->
<!--
......@@ -115,7 +115,7 @@ element.
to `arrow'.
* labelPosition sets the position of the label on the position. Values are
between 0 (near the origin state) and 100 (near the destination state).
- Appended to <automaton> or <transducer> node : x, y set the global offset.
- Appended to <automaton> node : x, y set the global offset.
-->
<!--
......@@ -240,7 +240,7 @@ with monoids and semirings.
-->
<xs:complexType name="numericalSemiring">
<xs:sequence>
<xs:element name="monoid" type="monoidAutomaton" minOccurs="0"/>
<xs:element name="monoid" type="monoid" minOccurs="0"/>
<xs:choice>
<xs:element name="semiring" type="semiring" minOccurs="0"/>
<xs:element name="numericalSemiring" type="numericalSemiring" minOccurs="0"/>
......@@ -251,18 +251,14 @@ with monoids and semirings.
<!--
<monoid> tag properties. Used to define all the monoid(s) properties
of the automaton / transducer.
of the automaton.
A monoid expects <generator> tags to define its generators, when available.
The <monoid> tag can be recursively constructed to build n-product of monoid.
For automata, default is free monoid, with the alphabet letters.
For transducers, default is product of free monoid, both the alphabet letters.
Default is free monoid, with the alphabet letters.
FIXME: generator should be broken into two elements so as to allow a default
value.
-->
<!--
The monoid type is broken in two parts, for automata and transducers.
-->
<xs:complexType name="generator">
<xs:attribute name="value" type="xs:string"/>
<xs:attribute name="range">
......@@ -274,9 +270,9 @@ The monoid type is broken in two parts, for automata and transducers.
</xs:attribute>
</xs:complexType>
<xs:complexType name="monoidAutomaton">
<xs:complexType name="monoid">
<xs:choice>
<xs:element name="monoid" type="monoidAutomaton" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="monoid" type="monoid" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="generator" type="generator" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="type" default="free">
......@@ -286,7 +282,7 @@ The monoid type is broken in two parts, for automata and transducers.
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="generators" default="letters">
<xs:attribute name="generatorType" default="letters">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="letters|digits|pair|indexed"/>
......@@ -296,50 +292,16 @@ The monoid type is broken in two parts, for automata and transducers.
<xs:attribute name="identitySymbol" type="xs:string"/>
</xs:complexType>
<xs:complexType name="monoidTransducer">
<xs:choice>
<xs:element name="monoid" type="monoidAutomaton" minOccurs="0" maxOccurs="2"/>
<xs:element name="generator" type="generator" minOccurs="0" maxOccurs="unbounded"/>
</xs:choice>
<xs:attribute name="type" default="product">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="unit|free|product"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="generators" default="letters">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="letters|digits|pair|weighted"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="identitySymbol" type="xs:string"/>
</xs:complexType>
<!--
<labelType> tag properties. This tag encapsulates semiring and monoid
definitions to entirely define the algebraic structure the automaton /
transducer is working on. This tag is optionnal if you want to use
definitions to entirely define the algebraic structure the automaton
is working on. This tag is optionnal if you want to use
default values. You can specify only one of the monoid / semiring tag,
if necessary.
-->
<xs:complexType name="typeAutomaton">
<xs:sequence>
<xs:element name="monoid" type="monoidAutomaton" minOccurs="0"/>
<xs:choice>
<xs:element name="semiring" type="semiring" minOccurs="0"/>
<xs:element name="numericalSemiring" type="numericalSemiring" minOccurs="0"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="typeTransducer">
<xs:sequence>
<xs:element name="monoid" type="monoidTransducer" minOccurs="0"/>
<xs:element name="monoid" type="monoid" minOccurs="0"/>
<xs:choice>
<xs:element name="semiring" type="semiring" minOccurs="0"/>
<xs:element name="numericalSemiring" type="numericalSemiring" minOccurs="0"/>
......@@ -347,10 +309,9 @@ if necessary.
</xs:sequence>
</xs:complexType>
<!--
<session> tag properties. This tag is used to encapsulate many
automata / transducers in a single XML file.
automata in a single XML file.
The session can be named using the "name" attribute. Global offset can
be set using the <geometry> tag, and global drawing properties can be
set using the <drawing> tag.
......@@ -359,7 +320,6 @@ set using the <drawing> tag.
<xs:complexType>
<xs:sequence>
<xs:element name="automaton" type="automaton" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="transducer" type="transducer" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="geometry" type="geometryGlobal" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
</xs:sequence>
......@@ -369,8 +329,8 @@ set using the <drawing> tag.
<!--
<state> tag properties. Used to define a state in the automaton /
transducer. This tag must be a child of <states> tag.
<state> tag properties. Used to define a state in the automaton.
This tag must be a child of <states> tag.
The "name" attribute is required, the other are optional. Use the
"number" attribute to set an order on states.
State position can be set using the <geometry> tag, and drawing
......@@ -392,7 +352,7 @@ properties can be set with the <drawing> tag.
<transition> tag properties. Used to define a transition between two
states . This tag must be a child of <transitions> tag.
The optional "weight" attribute can be used on weighted automata.
On transducers, use the "in" and "out" attributes to define input and
For transducers, use the "in" and "out" attributes to define input and
output for the transition.
Transition type can be defined using the <geometry> tag, and drawing properties can
be set with the <drawing> tag.
......@@ -400,36 +360,13 @@ be set with the <drawing> tag.
When unspecified, the unlabeled transition should be considered
labeled with the identity on the monoid.
-->
<xs:complexType name="labelAutomaton">
<xs:attribute name="label" type="xs:string"/>
<xs:attribute name="weight" type="xs:string"/>
</xs:complexType>
<xs:complexType name="labelTransducer">
<xs:attribute name="in" type="xs:string"/>
<xs:attribute name="out" type="xs:string"/>
</xs:complexType>
<xs:complexType name="transition">
<xs:sequence>
<xs:element name="geometry" type="geometryTrans" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
<xs:element name="label" type="expressionLabel" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="src" type="xs:string" use="required"/>
<xs:attribute name="dst" type="xs:string" use="required"/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="label" type="xs:string"/>
<xs:attribute name="weight" type="xs:string"/>
</xs:complexType>
<xs:complexType name="transitionTransducer">
<xs:sequence>
<xs:element name="geometry" type="geometryTrans" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
<xs:element name="in" type="expressionLabel" minOccurs="0"/>
<xs:element name="out" type="expressionLabel" minOccurs="0"/>
<xs:element name="label" type="expressionLabel" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="src" type="xs:string" use="required"/>
<xs:attribute name="dst" type="xs:string" use="required"/>
......@@ -469,16 +406,6 @@ Global geometry and drawing properties can be set for all transitions.
</xs:sequence>
</xs:complexType>
<xs:complexType name="transitionsTransducer">
<xs:sequence>
<xs:element name="transition" type="transitionTransducer" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="initial" type="initialTransducer" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="final" type="finalTransducer" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="geometry" type="geometryTrans" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
<initial> tag properties. Used to set a state as initial state. This
......@@ -491,19 +418,8 @@ and drawing properties.
<xs:element name="geometry" type="geometryInitFinal" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
<xs:element name="label" type="expressionLabel" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="state" type="xs:string" use="required"/>
<xs:attribute name="label" type="xs:string"/>
<xs:attribute name="weight" type="xs:string"/>
</xs:complexType>
<xs:complexType name="initialTransducer">
<xs:sequence>
<xs:element name="geometry" type="geometryInitFinal" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
<xs:element name="in" type="expressionLabel" minOccurs="0"/>
<xs:element name="out" type="expressionLabel" minOccurs="0"/>
<xs:element name="label" type="expressionLabel" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="state" type="xs:string" use="required"/>
<xs:attribute name="label" type="xs:string"/>
......@@ -521,19 +437,8 @@ and drawing properties.
<xs:element name="geometry" type="geometryInitFinal" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
<xs:element name="label" type="expressionLabel" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="state" type="xs:string" use="required"/>
<xs:attribute name="label" type="xs:string"/>
<xs:attribute name="weight" type="xs:string"/>
</xs:complexType>
<xs:complexType name="finalTransducer">
<xs:sequence>
<xs:element name="geometry" type="geometryInitFinal" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
<xs:element name="in" type="expressionLabel" minOccurs="0"/>
<xs:element name="out" type="expressionLabel" minOccurs="0"/>
<xs:element name="label" type="expressionLabel" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="state" type="xs:string" use="required"/>
<xs:attribute name="label" type="xs:string"/>
......@@ -543,16 +448,12 @@ and drawing properties.
</xs:complexType>
<!--
<content> tag properties. This tag is used to define the structure of
the automaton. It's a combination of <states>, <transitions>,
<initials> and <finals> tags. None of them are optional, and the order
is constrained.
-->
<!--
Two possible contents are available, one for automata and one for transducers.
-->
<xs:complexType name="contentAutomaton">
<xs:sequence>
<xs:element name="geometry" type="geometryGlobal" minOccurs="0"/>
......@@ -562,15 +463,6 @@ Two possible contents are available, one for automata and one for transducers.
</xs:sequence>
</xs:complexType>
<xs:complexType name="contentTransducer">
<xs:sequence>
<xs:element name="geometry" type="geometryGlobal" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
<xs:element name="states" type="states"/>
<xs:element name="transitions" type="transitionsTransducer"/>
</xs:sequence>
</xs:complexType>
<!--
<automaton> tag properties. It can be the root of the document, or a
......@@ -589,19 +481,4 @@ be set.
<xs:element name="automaton" type="automaton"/>
<!--
<transducer> tag properties. Same as above, but for transducers.
-->
<xs:complexType name="transducer">
<xs:sequence>
<xs:element name="labelType" type="typeTransducer" minOccurs="0"/>
<xs:element name="content" type="contentTransducer"/>
<xs:element name="geometry" type="geometryGlobal" minOccurs="0"/>
<xs:element name="drawing" type="drawing" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:element name="transducer" type="transducer"/>
</xs:schema>
......@@ -57,8 +57,9 @@ this program into an XML file.
As it will be described further, we use an XSD file \cite{vaucanson.www.xsd}
for the description format of this XML proposition, since it fits our needs.
This report first presents an XML representation of a classical Boolean
automaton. Then this example will be fleshed out, so as to deal with transducers
and more general automata with multiplicity.
automaton and a classical transducer. Then the format of the proposal will be
described in details so as to enable the reader to deal with more general
automata with multiplicity.
The automaton description is structured in two parts. The
\xtag{labelType} tag provides some automaton type definitions. This can be a
......@@ -84,7 +85,12 @@ program, and that it is not complicated nor more costly than to test
whether an announced property is indeed fulfilled.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Simple examples with default types}
\section{Simple examples}
The following examples aim at showing how some simple automata and transducers
can be defined in XML. The description and details about each node tag will be
given in the next sections.
\subsection{A Boolean automaton}
As a first example, the automaton of \autoref{B1} is represented in
......@@ -113,6 +119,12 @@ over the alphabet $\{a,b\}$ that contain at least one $b$.
\begin{center}
\begin{alltt}
<automaton>
<labelType>
<monoid type="free" generators="letters">
<generator range="implicitAlphabet"/>
</monoid>
<semiring set="B" operations="classical"/>
</labelType>
<content>
<states>
<state name="s0"/>
......@@ -169,7 +181,18 @@ represented in \autoref{bindiv3xml}.
\begin{figure}[ht]
\begin{center}
\begin{alltt}
<transducer>
<automaton>
<labelType>
<monoid type="product">
<monoid type="free" generators="letters">
<generator range="implicitAlphabet"/>
</monoid>
<monoid type="free" generators="letters">
<generator range="implicitAlphabet"/>
</monoid>
</monoid>
<semiring set="B" operations="classical"/>
</labelType>
<content>
<states>
<state name="s0"/>
......@@ -187,7 +210,7 @@ represented in \autoref{bindiv3xml}.
<final state="s0"/>
</transitions>
</content>
</transducer>
</automaton>
\end{alltt}
\caption{The XML description of T}
......@@ -336,8 +359,7 @@ such properties.
To create a transducer based on a free monoid product, it is necessary
to declare the two monoids in order to determine the two needed
alphabets. A suitable example can be found in the
\autoref{transducertype}. It represents the type of a default
transducer.
\autoref{bindiv3}.
The XSD description of this tag is a little complicated. Some elements
allow the proposition to be extensive and to fully describe any monoid
......@@ -472,7 +494,7 @@ a transducer.
\begin{figure}[ht]
\begin{center}
\begin{alltt}
<transducer>
<automaton>
<labelType>
<monoid generators="digits" type="free">
<generator value="0"/>
......@@ -490,7 +512,7 @@ a transducer.
<content>
...
</content>
<transducer>
</automaton>
\end{alltt}
\caption{Right transducer for binary addition}
\label{ratseries1}
......@@ -687,16 +709,16 @@ application can be found in \autoref{session1}.
\end{center}
\end{figure}
\subsection{The cascade of default options}
\subsection{The default value of the \xtag{labelType} tag}
The \xtag{labelType} tag has two children: the \xtag{monoid} tag and the
\xtag{semiring} tag. None of these tags is mandatory, and both have
different values according to the root tag. \autoref{automatontype}
shows the equivalent XML code if one omits the \xtag{labelType} tag when
declaring an automaton. Similarly, \autoref{transducertype} shows the
default type for transducers. The \xattr{operations} attribute is
set to \textit{classical}, which means that usual laws over
$\mathbb{B}$ shall be applied.
a default value. \autoref{automatontype} shows the equivalent XML code if one
omits the \xtag{labelType} tag when declaring an automaton. In this case, the
automaton alphabet is composed of all the letters of the alphabet.
The \xattr{operations} attribute is set to \textit{classical},
which means that usual laws over $\mathbb{B}$ shall be applied.
\begin{figure}[htp]
\begin{center}
......@@ -715,27 +737,6 @@ $\mathbb{B}$ shall be applied.
\end{figure}
\begin{figure}[htp]
\begin{center}
\begin{alltt}
<labelType>
<monoid type="product">
<monoid type="free" generators="letters">
<generator range="implicitAlphabet"/>
</monoid>
<monoid type="free" generators="letters">
<generator range="implicitAlphabet"/>
</monoid>
</monoid>
<semiring set="B" operations="classical"/>
</labelType>
\end{alltt}
\caption{Default type for a transducer}