Commit 64602fd5 authored by Sarah O'Connor's avatar Sarah O'Connor
Browse files

2005-05-13 Sarah O'Connor <sarah.o-connor@lrde.epita.fr>

	* include/vaucanson/z_fmp_transducer.hh: New. Add a context header for
	transducers seen as automata over a free monoid product, with
	multiplicity in Z semiring.

	* include/vaucanson/contexts/fmp_transducer_functions.thh,
	* include/vaucanson/contexts/fmp_transducer_functions.thxx: New. Add
	new_automaton() and make_couple() functions, to ease the creation of an
	automaton_t and a series_elt_t.
	* include/Makefile.am: Update.

	* include/vaucanson/fmp_transducer.hh: Include
	fmp_transducer_functions.thh file.

	* src/tests/context_headers/fmp_transducers/Makefile.am,
	* src/tests/context_headers/fmp_transducers/global_consistency_test.hh:
	New. Add a consistency test for fmp transducers context headers.
	* src/tests/context_headers/Makefile.am,
	* configure.ac: Update

	* src/tests/test-suites/context_headers_z_fmp_transducer.defs: New.
	Instanciate test on fmp transducers on Z semiring.
	* src/tests/test-suites/generate-all.sh: Update.

	* include/vaucanson/contexts/free_monoid_product.thh: Modify a wrong
	include.
parent 11ca64e7
2005-05-13 Sarah O'Connor <sarah.o-connor@lrde.epita.fr>
* include/vaucanson/z_fmp_transducer.hh: New. Add a context header for
transducers seen as automata over a free monoid product, with
multiplicity in Z semiring.
* include/vaucanson/contexts/fmp_transducer_functions.thh,
* include/vaucanson/contexts/fmp_transducer_functions.thxx: New. Add
new_automaton() and make_couple() functions, to ease the creation of an
automaton_t and a series_elt_t.
* include/Makefile.am: Update.
* include/vaucanson/fmp_transducer.hh: Include
fmp_transducer_functions.thh file.
* src/tests/context_headers/fmp_transducers/Makefile.am,
* src/tests/context_headers/fmp_transducers/global_consistency_test.hh:
New. Add a consistency test for fmp transducers context headers.
* src/tests/context_headers/Makefile.am,
* configure.ac: Update
* src/tests/test-suites/context_headers_z_fmp_transducer.defs: New.
Instanciate test on fmp transducers on Z semiring.
* src/tests/test-suites/generate-all.sh: Update.
* include/vaucanson/contexts/free_monoid_product.thh: Modify a wrong
include.
2005-05-12 Florent Terrones <florent.terrones@lrde.epita.fr>
* include/vaucanson/tools/dot_format.hxx: Enclose the
......@@ -34,7 +63,7 @@
* include/vaucanson/algorithms/realtime_composition.hxx:
Fix wrong structure used for "auto_structure" since it raised an
assertion in Fibonacci demo.
2005-05-05 Michael Cadilhac <michael.cadilhac@lrde.epita.fr>
* include/Makefile.am: Add `bencher.hh' and `bencher.hxx'.
......@@ -51,11 +80,11 @@
2005-05-03 Robert Bigaignon <robert.bigaignon@lrde.epita.fr>
* include/vaucanson/automata/concept/transducer.hh:
* include/vaucanson/automata/concept/transducer.hh:
Fix a bad typedef of the monoid for the output projection
helper.
Add a new helper for input projections.
2005-05-03 Florent Terrones <florent.terrones@lrde.epita.fr>
* include/vaucanson/algebra/concept/freemonoid_base.hxx: Add
......@@ -77,14 +106,14 @@
2005-04-27 Louis-Noel Pouchet <louis-noel.pouchet@lrde.epita.fr>
* src/tests/automata/algos/series_multiplicity_transducers/realtime:
Remove.
Remove.
2005-04-27 Louis-Noel Pouchet <louis-noel.pouchet@lrde.epita.fr>
Change organization of the test suite, according to algorithms domain
definition. This is the first part of the reorganization of the test
suite, and no particular concerns are given to tests themselves. This
patch should be completed with new tests, as it doesn't enable full
suite, and no particular concerns are given to tests themselves. This
patch should be completed with new tests, as it doesn't enable full
tests on transducers.
* src/tests/automata/algos/README: New file. Explains directory tree of
......@@ -93,17 +122,17 @@
* configure.ac,
* src/tests/Makefile.am,
* src/tests/automata/algos/Makefile.am: Update.
* src/tests/test-suites/generate-all.sh: Update with new algorithm
tests organization.
* src/tests/test-suites/generate-all.sh: Update with new algorithm
tests organization.
* src/tests/test-suites/boolean_transducer.defs: Add CREATE_SEMIRING
* src/tests/test-suites/boolean_transducer.defs: Add CREATE_SEMIRING
macro to enable semiring creation for transducers. This macro is
used when a test tries to instanciate a semiring_t, which must be
parameterized with monoid and semiring, in case of boolean
transducers.
* src/tests/bin/generate-test-suite.sh: Add default
CREATE_SEMIRING macro.
* src/tests/automata/implementation_check/rdelta_test.hh: Use
* src/tests/automata/implementation_check/rdelta_test.hh: Use
CREATE_SEMIRING macro for semiring creation.
Transducers over P(B*):
......@@ -117,7 +146,7 @@
New file.
* src/tests/transducers/Makefile.am,
* src/tests/transducers: Delete.
Free Monoid Product transducers:
* src/tests/fmp_transducers/instantiation_test.hh: Move to...
* src/tests/automata/algos/fmp_transducers/instantiation_test.hh:
......@@ -133,7 +162,7 @@
* src/tests/automata/algos/aci_canonical_test.hh,
* src/tests/automata/algos/determinist_test.hh,
* src/tests/boolean_automata/brzozowski_test.hh: Move to...
* src/tests/automata/algos/boolean_automata: ...this directory.
* src/tests/automata/algos/boolean_automata: ...this directory.
* src/tests/automata/algos/boolean_automata/Makefile.am: New file.
* src/tests/boolean_automata/Makefile.am,
* src/tests/boolean_automata: Delete.
......@@ -146,7 +175,7 @@
* src/tests/automata/algos/reachable_test.hh,
* src/tests/automata/algos/graphs/sub_automaton_test.hh,
* src/tests/automata/algos/trim_test.hh: Move to...
* src/tests/automata/algos/graphs/: ...this directory, and use
* src/tests/automata/algos/graphs/: ...this directory, and use
CREATE_SEMIRING macro where needed.
* src/tests/automata/algos/graphs/Makefile.am: New file.
......@@ -154,20 +183,20 @@
* src/tests/automata/algos/krat_exp_realtime_conflict_test.hh,
* src/tests/automata/algos/realtime_test.hh,
* src/tests/automata/algos/generalized_test.hh: Move to...
* src/tests/automata/algos/freemonoid_labeled_graphs: ...this
* src/tests/automata/algos/freemonoid_labeled_graphs: ...this
directory.
* src/tests/automata/algos/freemonoid_labeled_graphs/Makefile.am: New
file.
* src/tests/k_automata/Makefile.am,
* src/tests/k_automata: Delete.
Labeled graphs:
* src/tests/automata/algos/elimination_test.hh,
* src/tests/automata/algos/normalize_test.hh,
* src/tests/automata/algos/is_isomorph_test.hh: Move to...
* src/tests/automata/algos/labeled_graphs: ...this directory.
* src/tests/automata/algos/labeled_graphs/Makefile.am: New file.
Label aware labeled graphs:
* src/tests/automata/algos/closure_test.hh,
* src/tests/automata/algos/glushkov_test.hh,
......@@ -191,7 +220,7 @@
directory.
* src/tests/automata/algos/letter_combination_labeled_graphs/Makefile.am:
New file.
2005-04-24 Thomas Claveirole <thomas.claveirole@lrde.epita.fr>
* include/vaucanson/contexts/automaton.thh: Remove the
......
......@@ -142,6 +142,7 @@ AC_CONFIG_FILES([
src/tests/context_headers/Makefile
src/tests/context_headers/automata/Makefile
src/tests/context_headers/transducers/Makefile
src/tests/context_headers/fmp_transducers/Makefile
src/tests/test-suites/Makefile
src/tests/xml/Makefile
src/demos/Makefile
......
......@@ -342,10 +342,13 @@ nobase_include_HEADERS = \
vaucanson/boolean_automaton.hh \
vaucanson/boolean_transducer.hh \
vaucanson/fmp_transducer.hh \
vaucanson/z_fmp_transducer.hh \
vaucanson/contexts/automaton_functions.thh \
vaucanson/contexts/automaton_functions.thxx \
vaucanson/contexts/transducer_functions.thh \
vaucanson/contexts/transducer_functions.thxx \
vaucanson/contexts/fmp_transducer_functions.thh \
vaucanson/contexts/fmp_transducer_functions.thxx \
vaucanson/z_max_plus_automaton.hh \
vaucanson/z_min_plus_automaton.hh \
vaucanson/z_automaton.hh \
......
// -*- c++ -*-
// fmp_transducer_functions.thh: this file is part of the Vaucanson project.
//
// Vaucanson, a generic library for finite state machines.
// Copyright (C) 2005 The Vaucanson Group.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// The Vaucanson Group represents the following contributors:
// * Jacques Sakarovitch <sakarovitch@enst.fr>
// * Sylvain Lombardy <lombardy@liafa.jussieu.fr>
// * Thomas Claveirole <thomas.claveirole@lrde.epita.fr>
// * Loic Fosse <loic.fosse@lrde.epita.fr>
// * Thanh-Hoc Nguyen <nguyen@enst.fr>
// * Raphael Poss <raphael.poss@lrde.epita.fr>
// * Yann Regis-Gianas <yann.regis-gianas@lrde.epita.fr>
// * Maxime Rey <maxime.rey@lrde.epita.fr>
// * Sarah O'Connor <sarah.o-connor@lrde.epita.fr>
// * Louis-Noel Pouchet <louis-noel.pouchet@lrde.epita.fr>
//
# include <vaucanson/algebra/concept/alphabets_base.hh>
# include <vaucanson/tools/usual_macros.hh>
namespace vcsn
{
namespace VCSN_CONTEXT_NAMESPACE
{
template <class T1, class T2>
automaton_t new_automaton(const T1& first_alphabet,
const T2& second_alphabet);
template <class FirstInputIterator, class SecondInputIterator>
automaton_t new_automaton(const FirstInputIterator first_begin,
const FirstInputIterator first_end,
const SecondInputIterator second_begin,
const SecondInputIterator second_end);
template <class T1, class T2>
series_set_elt_t make_couple(const T1& first_alphabet,
const T2& second_alphabet,
const std::string& first_exp = "",
const std::string& second_exp = "");
template <class FirstIterator, class SecondIterator>
series_set_elt_t make_couple(const FirstIterator first_begin,
const FirstIterator first_end,
const SecondIterator second_begin,
const SecondIterator second_end,
const std::string& first_exp,
const std::string& second_exp);
} // End of namespace VCSN_CONTEXT_NAMESPACE.
} // End of namespace vcsn.
# ifndef VCSN_USE_INTERFACE_ONLY
# include <vaucanson/contexts/fmp_transducer_functions.thxx>
# endif // ! VCSN_USE_INTERFACE_ONLY
// -*- c++ -*-
// fmp_transducer_functions.thxx: this file is part of the Vaucanson project.
//
// Vaucanson, a generic library for finite state machines.
// Copyright (C) 2005 The Vaucanson Group.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// The Vaucanson Group represents the following contributors:
// * Jacques Sakarovitch <sakarovitch@enst.fr>
// * Sylvain Lombardy <lombardy@liafa.jussieu.fr>
// * Thomas Claveirole <thomas.claveirole@lrde.epita.fr>
// * Loic Fosse <loic.fosse@lrde.epita.fr>
// * Thanh-Hoc Nguyen <nguyen@enst.fr>
// * Raphael Poss <raphael.poss@lrde.epita.fr>
// * Yann Regis-Gianas <yann.regis-gianas@lrde.epita.fr>
// * Maxime Rey <maxime.rey@lrde.epita.fr>
// * Sarah O'Connor <sarah.o-connor@lrde.epita.fr>
// * Louis-Noel Pouchet <louis-noel.pouchet@lrde.epita.fr>
//
namespace vcsn
{
namespace VCSN_CONTEXT_NAMESPACE
{
template <class FirstInputIterator, class SecondInputIterator>
automata_set_t new_automata_set(const FirstInputIterator first_begin,
const FirstInputIterator first_end,
const SecondInputIterator second_begin,
const SecondInputIterator second_end)
{
first_alphabet_t first_alpha;
for (FirstInputIterator e = first_begin; e != first_end; ++e)
first_alpha.insert(*e);
second_alphabet_t second_alpha;
for (SecondInputIterator e = second_begin; e != second_end; ++e)
second_alpha.insert(*e);
semiring_t semiring;
monoid_t freemonoidproduct (first_alpha, second_alpha);
series_set_t series (semiring, freemonoidproduct);
return automata_set_t (series);
}
template <class FirstInputIterator, class SecondInputIterator>
automaton_t new_automaton(const FirstInputIterator first_begin,
const FirstInputIterator first_end,
const SecondInputIterator second_begin,
const SecondInputIterator second_end)
{
return automaton_t (new_automata_set(first_begin, first_end,
second_begin, second_end));
}
template <class T1, class T2>
automaton_t new_automaton(const T1& first_alphabet,
const T2& second_alphabet)
{
return new_automaton(first_alphabet.begin(), first_alphabet.end(),
second_alphabet.begin(), second_alphabet.end());
}
template <class FirstIterator, class SecondIterator>
series_set_elt_t make_couple(const FirstIterator first_begin,
const FirstIterator first_end,
const SecondIterator second_begin,
const SecondIterator second_end,
const std::string& first_exp,
const std::string& second_exp)
{
first_alphabet_t first_alpha;
for (FirstIterator e = first_begin; e != first_end; ++e)
first_alpha.insert(*e);
second_alphabet_t second_alpha;
for (SecondIterator e = second_begin; e != second_end; ++e)
second_alpha.insert(*e);
semiring_t semiring;
monoid_t freemonoidproduct (first_alpha, second_alpha);
series_set_t series (semiring, freemonoidproduct);
series_set_elt_t series_elt(series);
monoid_elt_value_t fmp_elt (first_exp, second_exp);
semiring_elt_value_t semiring_elt = true;
series_elt.assoc(fmp_elt, semiring_elt);
return series_elt;
}
template <class T1, class T2>
series_set_elt_t make_couple(const T1& first_alphabet,
const T2& second_alphabet,
const std::string& first_exp,
const std::string& second_exp)
{
return make_couple(first_alphabet.begin(), first_alphabet.end(),
second_alphabet.begin(), second_alphabet.end(),
first_exp, second_exp);
}
} // End of namespace VCSN_CONTEXT_NAMESPACE.
} // End of namespace vcsn.
......@@ -34,7 +34,7 @@
// Input: first_monoid_elt_t, second_monoid_elt_t.
// Output: monoid_elt_t.
# include <vaucanson/algebra/concept/freemonoid_product.hh>
# include <vaucanson/algebra/implementation/free_monoid_product/freemonoid_product_pair_str.hh>
/*-------.
| Monoid |
......
......@@ -60,6 +60,7 @@ namespace vcsn
# include <vaucanson/contexts/polynom_series.thh>
# include <vaucanson/contexts/generic_automaton_impl.thh>
# include <vaucanson/contexts/automaton.thh>
# include <vaucanson/contexts/fmp_transducer_functions.thh>
# undef VCSN_CONTEXT_NAMESPACE
......
// z_fmp_transducer.hh: this file is part of the Vaucanson project.
//
// Vaucanson, a generic library for finite state machines.
// Copyright (C) 2005 The Vaucanson Group.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// The Vaucanson Group consists of the following contributors:
// * Jacques Sakarovitch <sakarovitch@enst.fr>
// * Sylvain Lombardy <lombardy@liafa.jussieu.fr>
// * Thomas Claveirole <thomas.claveirole@lrde.epita.fr>
// * Loic Fosse <loic.fosse@lrde.epita.fr>
// * Thanh-Hoc Nguyen <nguyen@enst.fr>
// * Raphael Poss <raphael.poss@lrde.epita.fr>
// * Yann Regis-Gianas <yann.regis-gianas@lrde.epita.fr>
// * Maxime Rey <maxime.rey@lrde.epita.fr>
// * Sarah O'Connor <sarah.o-connor@lrde.epita.fr>
// * Louis-Noel Pouchet <louis-noel.pouchet@lrde.epita.fr>
//
#ifndef VCSN_Z_FMP_TRANSDUCER_HH
# define VCSN_Z_FMP_TRANSDUCER_HH
# include <vaucanson/z_automaton.hh>
# define VCSN_CONTEXT_NAMESPACE z_fmp_transducer
namespace vcsn
{
namespace VCSN_CONTEXT_NAMESPACE
{
typedef z_automaton::monoid_elt_t first_monoid_elt_t;
typedef first_monoid_elt_t::set_t first_monoid_t;
typedef first_monoid_elt_t::value_t first_monoid_elt_value_t;
typedef first_monoid_t::alphabet_t first_alphabet_t;
typedef z_automaton::monoid_elt_t second_monoid_elt_t;
typedef second_monoid_elt_t::set_t second_monoid_t;
typedef second_monoid_elt_t::value_t second_monoid_elt_value_t;
typedef second_monoid_t::alphabet_t second_alphabet_t;
} // End of namespace VCSN_CONTEXT_NAMESPACE.
} // End of namespace vcsn.
# include <vaucanson/contexts/free_monoid_product.thh>
# include <vaucanson/contexts/z_semiring.thh>
# include <vaucanson/contexts/polynom_series.thh>
# include <vaucanson/contexts/generic_automaton_impl.thh>
# include <vaucanson/contexts/automaton.thh>
# include <vaucanson/contexts/fmp_transducer_functions.thh>
# undef VCSN_CONTEXT_NAMESPACE
#endif // ! VCSN_Z_FMP_TRANSDUCER_HH
......@@ -3,4 +3,5 @@
# $Id: Makefile.am 540 2004-03-31 23:59:34Z o-conn_s $
SUBDIRS = automata \
transducers
transducers \
fmp_transducers
# context_headers/fmp_transducers
#
# $Id: Makefile.am 540 2004-03-31 23:59:34Z o-conn_s $
EXTRA_DIST = global_consistency_test.hh
// global_consistency_test.hh: this file is part of the Vaucanson project.
//
// Vaucanson, a generic library for finite state machines.
// Copyright (C) 2005 The Vaucanson Group.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// The Vaucanson Group consists of the following contributors:
// * Jacques Sakarovitch <sakarovitch@enst.fr>
// * Sylvain Lombardy <lombardy@liafa.jussieu.fr>
// * Thomas Claveirole <thomas.claveirole@lrde.epita.fr>
// * Loic Fosse <loic.fosse@lrde.epita.fr>
// * Thanh-Hoc Nguyen <nguyen@enst.fr>
// * Raphael Poss <raphael.poss@lrde.epita.fr>
// * Yann Regis-Gianas <yann.regis-gianas@lrde.epita.fr>
// * Maxime Rey <maxime.rey@lrde.epita.fr>
// * Sarah O'Connor <sarah.o-connor@lrde.epita.fr>
// * Louis-Noel Pouchet <louis-noel.pouchet@lrde.epita.fr>
//
#ifndef VCSN_TESTS_CONTEXT_HEADERS_FMP_TRANSDUCERS_GLOBAL_CONSISTENCY_TEST_HH
# define VCSN_TESTS_CONTEXT_HEADERS_FMP_TRANSDUCERS_GLOBAL_CONSISTENCY_TEST_HH
# include <vaucanson/misc/static.hh>
bool
operator == (const automaton_t& a, const automaton_t& b)
{
return
a.states().size() == b.states().size() and
a.edges().size() == b.edges().size() and
a.initial().size() == b.initial().size() and
a.final().size() == b.final().size();
}
# define TYPE_OK(T1, T2) utility::static_eq<T1, typename Automaton::T2>::value
# define TEST_TYPE(T1, T2) \
TEST(t, #T1 " is consistent.", TYPE_OK(T1, T2))
template <class Automaton>
bool
global_consistency_test(tests::Tester& t)
{
TEST_TYPE(first_alphabet_t, monoid_t::first_monoid_t::alphabet_t);
TEST_TYPE(second_alphabet_t, monoid_t::second_monoid_t::alphabet_t);
TEST_TYPE(first_monoid_t, monoid_t::first_monoid_t);
TEST_TYPE(second_monoid_t, monoid_t::second_monoid_t);
TEST_TYPE(monoid_t, monoid_t);
TEST_TYPE(semiring_t, semiring_t);
TEST_TYPE(series_set_t, series_set_t);
TEST_TYPE(automata_set_t, set_t);
bool test_done = false;
first_alphabet_t first_at;
first_at.insert('a');
first_at.insert('b');
second_alphabet_t second_at;
second_at.insert('x');
second_at.insert('y');
first_alphabet_t other_first_at;
first_at.insert('c');
first_at.insert('d');
second_alphabet_t other_second_at;
second_at.insert('z');
second_at.insert('t');
first_monoid_t first_md (first_at);
second_monoid_t second_md (second_at);
monoid_t fmp(first_md, second_md);
semiring_t sg;
series_set_t ss (sg, fmp);
automata_set_t aa (ss);
monoid_elt_value_t fmp_elt ("aa", "yx");
semiring_elt_value_t semiring_elt = true;
series_set_elt_t series_elt(ss);
series_elt.assoc(fmp_elt, semiring_elt);
series_set_elt_t couple = make_couple(first_at, second_at, "aa", "yx");
TEST(t, "make_couple works.", series_elt == couple);
while (not test_done)
try
{
automaton_t a1 = new_automaton(first_at, second_at);
automaton_t a2 = new_automaton(first_at.begin(),
first_at.end(),
second_at.begin(),
second_at.end());
automaton_t a3 (aa);
automaton_t a4 = new_automaton(other_first_at,
other_second_at);
TEST(t, "new_automaton is consistent.", a1 == a2);
TEST(t, "new_automaton gives a correct alphabet.",
a1.structure().series().monoid().first_monoid().alphabet()
== first_at
and
a1.structure().series().monoid().second_monoid().alphabet()
== second_at);
TEST(t, "new automaton alphabet is consistent.",
a1.structure().series().monoid().first_monoid().alphabet()
!= other_first_at
and
a1.structure().series().monoid().second_monoid().alphabet()
!= other_second_at);
TEST(t, "new_automaton gives a correct monoid.",
a1.structure().series().monoid() == fmp);
TEST(t, "new_automaton gives a correct semiring.",
a1.structure().series().semiring() == sg);
TEST(t, "new_automaton gives a correct automata set.",
a1.structure() == aa);
TEST(t, "new automata set is consistent.",
a1.structure() != a4.structure());
test_done = true;
}
catch (...)
{
test_done = false;
}
return t.all_passed();