Vcsn  2.0
Be Rational
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
product.hh File Reference
#include <iostream>
#include <map>
#include <utility>
#include <vcsn/algos/insplit.hh>
#include <vcsn/algos/strip.hh>
#include <vcsn/core/tuple-automaton.hh>
#include <vcsn/core/transition-map.hh>
#include <vcsn/ctx/context.hh>
#include <vcsn/ctx/traits.hh>
#include <vcsn/dyn/automaton.hh>
#include <vcsn/dyn/ratexp.hh>
#include <vcsn/misc/vector.hh>
#include <vcsn/misc/zip-maps.hh>
Include dependency graph for product.hh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  vcsn::detail::product_automaton_impl< Aut, Auts >
 Build the (accessible part of the) product. More...
 

Namespaces

 vcsn
 
 vcsn::detail
 
 vcsn::dyn
 FIXME: duplicate code with determinize.
 
 vcsn::dyn::detail
 

Typedefs

template<typename Aut , typename... Auts>
using vcsn::product_automaton = std::shared_ptr< detail::product_automaton_impl< Aut, Auts...>>
 A product automaton as a shared pointer. More...
 

Functions

template<typename... Auts>
auto vcsn::join_automata (Auts &&...auts) -> decltype(make_mutable_automaton(join(auts->context()...)))
 Join between automata. More...
 
template<typename... Auts>
auto vcsn::meet_automata (Auts &&...auts) -> decltype(make_mutable_automaton(meet(auts->context()...)))
 Meet between automata. More...
 
template<typename Aut , typename... Auts>
auto vcsn::make_product_automaton (Aut aut, const Auts &...auts) -> product_automaton< Aut, Auts...>
 
template<typename... Auts>
auto vcsn::product (const Auts &...as) -> product_automaton< decltype(meet_automata(as...)), Auts...>
 Build the (accessible part of the) product. More...
 
template<std::size_t I, typename Aut >
std::enable_if< labelset_t_of
< Aut >::has_one()&&I!=0, Aut >
::type 
vcsn::dyn::detail::do_insplit (Aut &aut)
 
template<std::size_t I, typename Aut >
std::enable_if<!labelset_t_of
< Aut >::has_one()||I==0, Aut & >
::type 
vcsn::dyn::detail::do_insplit (Aut &aut)
 
template<typename... Auts, size_t... I>
automaton vcsn::dyn::detail::product_ (const std::vector< automaton > &as, vcsn::detail::index_sequence< I...>)
 
template<typename Lhs , typename Rhs >
automaton vcsn::dyn::detail::product (const automaton &lhs, const automaton &rhs)
 Binary bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (product,(const automaton &, const automaton &) -> automaton)
 
template<typename... Auts>
automaton vcsn::dyn::detail::product_vector (const std::vector< automaton > &as)
 Variadic bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (product_vector,(const std::vector< automaton > &) -> automaton)
 
template<typename... Auts>
auto vcsn::shuffle (const Auts &...as) -> product_automaton< decltype(join_automata(as...)), Auts...>
 The (accessible part of the) shuffle product. More...
 
template<typename Lhs , typename Rhs >
automaton vcsn::dyn::detail::shuffle (const automaton &lhs, const automaton &rhs)
 Binary bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (shuffle,(const automaton &, const automaton &) -> automaton)
 
template<typename... Auts, size_t... I>
automaton vcsn::dyn::detail::shuffle_ (const std::vector< automaton > &as, vcsn::detail::index_sequence< I...>)
 Variadic bridge helper. More...
 
template<typename... Auts>
automaton vcsn::dyn::detail::shuffle_vector (const std::vector< automaton > &as)
 Variadic bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (shuffle_vector,(const std::vector< automaton > &) -> automaton)
 
template<typename ValueSet >
ValueSet::value_t vcsn::shuffle (const ValueSet &vs, const typename ValueSet::value_t &lhs, const typename ValueSet::value_t &rhs)
 Shuffle product of ratexps. More...
 
template<typename RatExpSetLhs , typename RatExpSetRhs >
ratexp vcsn::dyn::detail::shuffle_ratexp (const ratexp &lhs, const ratexp &rhs)
 Bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (shuffle_ratexp,(const ratexp &, const ratexp &) -> ratexp)
 
template<typename... Auts>
auto vcsn::infiltration (const Auts &...as) -> product_automaton< decltype(join_automata(as...)), Auts...>
 The (accessible part of the) infiltration product. More...
 
template<typename Lhs , typename Rhs >
automaton vcsn::dyn::detail::infiltration (const automaton &lhs, const automaton &rhs)
 Binary bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (infiltration,(const automaton &, const automaton &) -> automaton)
 
template<typename... Auts, size_t... I>
automaton vcsn::dyn::detail::infiltration_ (const std::vector< automaton > &as, vcsn::detail::index_sequence< I...>)
 Variadic bridge helper. More...
 
template<typename... Auts>
automaton vcsn::dyn::detail::infiltration_vector (const std::vector< automaton > &as)
 Variadic bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (infiltration_vector,(const std::vector< automaton > &) -> automaton)
 
template<typename Aut >
auto vcsn::power (const Aut &aut, unsigned n) -> typename Aut::element_type::automaton_nocv_t
 
template<typename Aut , typename Unsigned >
automaton vcsn::dyn::detail::power (const automaton &aut, unsigned n)
 Bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (power,(const automaton &, unsigned) -> automaton)
 
template<typename RatExpSet >
RatExpSet::value_t vcsn::conjunction (const RatExpSet &rs, const typename RatExpSet::value_t &lhs, const typename RatExpSet::value_t &rhs)
 Intersection/Hadamard product of ratexps. More...
 
template<typename RatExpSetLhs , typename RatExpSetRhs >
ratexp vcsn::dyn::detail::conjunction_ratexp (const ratexp &lhs, const ratexp &rhs)
 Bridge. More...
 
 vcsn::dyn::detail::REGISTER_DECLARE (conjunction_ratexp,(const ratexp &, const ratexp &) -> ratexp)