Vcsn  2.2a
Be Rational
conjunction.hh File Reference
#include <iostream>
#include <map>
#include <utility>
#include <vcsn/algos/insplit.hh>
#include <vcsn/algos/strip.hh>
#include <vcsn/algos/copy.hh>
#include <vcsn/algos/transpose.hh>
#include <vcsn/core/automaton-decorator.hh>
#include <vcsn/core/join-automata.hh>
#include <vcsn/core/lazy-tuple-automaton.hh>
#include <vcsn/core/tuple-automaton.hh>
#include <vcsn/ctx/context.hh>
#include <vcsn/ctx/traits.hh>
#include <vcsn/dyn/automaton.hh>
#include <vcsn/dyn/expression.hh>
#include <vcsn/dyn/polynomial.hh>
#include <vcsn/misc/tuple.hh>
#include <vcsn/misc/zip-maps.hh>
Include dependency graph for conjunction.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< Lazy, Aut, Auts >
 Build the (accessible part of the) product. More...
 

Namespaces

 vcsn
 
 vcsn::detail
 
 vcsn::dyn
 
 vcsn::dyn::detail
 

Typedefs

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

Functions

template<bool Lazy, Automaton Aut, Automaton... Auts>
auto vcsn::make_product_automaton (Aut aut, const Auts &...auts) -> product_automaton< Lazy, Aut, Auts... >
 
template<Automaton... Auts>
auto vcsn::conjunction (const Auts &...as) -> tuple_automaton< decltype(meet_automata(as...)), Auts... >
 Build the (accessible part of the) conjunction. More...
 
template<Automaton... Auts>
auto vcsn::conjunction_lazy (const Auts &...as) -> product_automaton< true, decltype(meet_automata(as...)), Auts... >
 Build the (accessible part of the) conjunction, on-the-fly. More...
 
template<std::size_t I, Automaton Aut>
auto vcsn::dyn::detail::do_insplit (Aut &aut) -> std::enable_if_t< labelset_t_of< Aut >::has_one()&&I!=0
 
template<std::size_t I, Automaton Aut>
autodecltype(insplit(aut)) std::enable_if_t<!labelset_t_of< Aut >::has_one()||I==0, Aut & > vcsn::dyn::detail::do_insplit (Aut &aut)
 
template<typename Auts , size_t... I>
automaton vcsn::dyn::detail::conjunction_ (const std::vector< automaton > &as, bool lazy, vcsn::detail::index_sequence< I... >)
 Bridge helper. More...
 
template<typename Auts , typename Bool >
automaton vcsn::dyn::detail::conjunction (const std::vector< automaton > &as, bool lazy)
 Bridge (conjunction). More...
 
template<Automaton Aut1, Automaton Aut2>
Aut2 & vcsn::ldiv_here (const Aut1 &lhs, Aut2 &res)
 Compute the left quotient in place. More...
 
template<Automaton Aut1, Automaton Aut2>
auto vcsn::ldiv (const Aut1 &a1, const Aut2 &a2)
 Compute the left quotient. More...
 
template<Automaton Aut1, Automaton Aut2>
automaton vcsn::dyn::detail::ldiv (const automaton &aut1, const automaton &aut2)
 Bridge (ldiv). More...
 
template<Automaton Aut1, Automaton Aut2>
auto vcsn::rdiv (const Aut1 &a1, const Aut2 &a2)
 Compute the right quotient. More...
 
template<Automaton Aut1, Automaton Aut2>
automaton vcsn::dyn::detail::rdiv (const automaton &aut1, const automaton &aut2)
 Bridge. More...
 
template<Automaton... Auts>
auto vcsn::shuffle (const Auts &...as) -> tuple_automaton< decltype(join_automata(as...)), Auts... >
 The (accessible part of the) shuffle product. More...
 
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 (const std::vector< automaton > &as)
 Bridge (shuffle). More...
 
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 expressions. More...
 
template<typename ExpSetLhs , typename ExpSetRhs >
expression vcsn::dyn::detail::shuffle_expression (const expression &lhs, const expression &rhs)
 Bridge (shuffle). More...
 
template<Automaton A1, Automaton A2>
auto vcsn::infiltration (const A1 &a1, const A2 &a2) -> tuple_automaton< decltype(join_automata(a1, a2)), A1, A2 >
 The (accessible part of the) infiltration product. More...
 
template<Automaton A1, Automaton A2, Automaton A3, Automaton... Auts>
auto vcsn::infiltration (const A1 &a1, const A2 &a2, const A3 &a3, const Auts &...as) -> decltype(infiltration(infiltration(a1, a2), a3, as...))
 The (accessible part of the) infiltration product. More...
 
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 (const std::vector< automaton > &as)
 Bridge (infiltration). More...
 
template<typename ValueSet >
ValueSet::value_t vcsn::infiltration (const ValueSet &vs, const typename ValueSet::value_t &lhs, const typename ValueSet::value_t &rhs)
 Infiltration product of expressions. More...
 
template<typename ExpSetLhs , typename ExpSetRhs >
expression vcsn::dyn::detail::infiltration_expression (const expression &lhs, const expression &rhs)
 Bridge (infiltration). More...
 
template<Automaton Aut>
auto vcsn::conjunction (const Aut &aut, unsigned n) -> fresh_automaton_t_of< Aut >
 
template<Automaton Aut, typename Unsigned >
automaton vcsn::dyn::detail::conjunction_repeated (const automaton &aut, unsigned n)
 Bridge (conjunction). More...
 
template<typename ValueSet >
ValueSet::value_t vcsn::conjunction (const ValueSet &rs, const typename ValueSet::value_t &lhs, const typename ValueSet::value_t &rhs)
 Intersection/Hadamard product of expressions/polynomials. More...
 
template<typename ExpSetLhs , typename ExpSetRhs >
expression vcsn::dyn::detail::conjunction_expression (const expression &lhs, const expression &rhs)
 Bridge (conjunction). More...
 
template<typename PolynomialSetLhs , typename PolynomialSetRhs >
polynomial vcsn::dyn::detail::conjunction_polynomial (const polynomial &lhs, const polynomial &rhs)
 Bridge (conjunction). More...