25 template <Automaton Aut1, Automaton Aut2>
28 -> std::enable_if_t<(std::is_same<weightset_t_of<Aut1>,
b>::value
29 && std::is_same<weightset_t_of<Aut2>,
b>::value),
40 template <Automaton Aut1, Automaton Aut2>
44 a2->weightset()->sub(a2->weightset()->zero(),
45 a2->weightset()->one()),
48 const auto& ws2 = *a2->weightset();
53 lweight(ws2.sub(ws2.zero(), ws2.one()),
64 template <Automaton Aut1, Automaton Aut2>
68 const auto& a1 = aut1->
as<Aut1>();
69 const auto& a2 = aut2->
as<Aut2>();
81 template <
typename ExpSet1,
typename ExpSet2>
84 const typename ExpSet1::value_t r1,
86 const typename ExpSet2::value_t r2)
102 template <
typename ExpSet1,
typename ExpSet2>
106 const auto& l = r1->as<ExpSet1>();
107 const auto&
r = r2->as<ExpSet2>();
109 r.valueset(), r.value());
120 template <Automaton Lhs, Automaton Rhs>
138 template <Automaton Lhs, Automaton Rhs>
142 const auto& l = lhs->
as<Lhs>();
143 const auto&
r = rhs->
as<Rhs>();
154 template <
typename ExpSet>
155 typename ExpSet::value_t
157 const typename ExpSet::value_t& lhs,
158 const typename ExpSet::value_t& rhs)
160 return rs.conjunction(lhs, rs.complement(rhs));
168 template <
typename ExpSetLhs,
typename ExpSetRhs>
172 const auto& l = lhs->as<ExpSetLhs>();
173 const auto&
r = rhs->as<ExpSetLhs>();
typename detail::weightset_t_of_impl< base_t< ValueSet > >::type weightset_t_of
bool is_deterministic(const automaton &aut)
Bridge.
auto add(const Aut1 &lhs, const Aut2 &rhs, deterministic_tag)
automaton difference(const automaton &lhs, const automaton &rhs)
Bridge.
auto lweight(const weight_t_of< Aut > &w, const Aut &aut, Tag tag={}) -> fresh_automaton_t_of< Aut >
Left-multiplication of an automaton by a weight.
auto reduce(const Aut &input) -> decltype(copy(input))
bool is_complete(const automaton &aut)
Bridge.
auto are_equivalent(const ExpSet1 &rs1, const typename ExpSet1::value_t r1, const ExpSet2 &rs2, const typename ExpSet2::value_t r2) -> bool
Check equivalence between two expressions.
expression difference_expression(const expression &lhs, const expression &rhs)
Bridge (difference).
automaton complete(const automaton &aut)
Bridge.
Provide a variadic mul on top of a binary mul(), and one().
bool is_useless(const Aut &a)
Whether all no state is useful.
bool is_empty(const Aut &a) ATTRIBUTE_PURE
Whether has no states.
bool are_equivalent(const automaton &aut1, const automaton &aut2)
Bridge.
ExpSet::value_t difference(const ExpSet &rs, const typename ExpSet::value_t &lhs, const typename ExpSet::value_t &rhs)
Difference of expressions.
auto & as()
Extract wrapped typed automaton.
automaton determinize(const automaton &aut, const std::string &algo)
Bridge.
auto realtime(const Aut &aut) -> decltype(proper(::vcsn::letterize(aut)))
Split the word transitions in the input automaton into letter ones, and remove the spontaneous transi...
automaton derived_term(const expression &exp, const std::string &algo)
Bridge.
value_impl< detail::expression_tag > expression
automaton conjunction(const std::vector< automaton > &as, bool lazy)
Bridge (conjunction).
fresh_automaton_t_of< Lhs > difference(const Lhs &lhs, const Rhs &rhs)
An automaton that computes weights of lhs, but not by rhs.
automaton strip(const automaton &aut)
Bridge.
typename Aut::element_type::template fresh_automaton_t< Context > fresh_automaton_t_of
Given an automaton type, the type of its copies.
bool are_equivalent_expression(const expression &r1, const expression &r2)
Bridge (are_equivalent).
auto are_equivalent(const Aut1 &a1, const Aut2 &a2) -> std::enable_if_t<(std::is_same< weightset_t_of< Aut1 >, b >::value &&std::is_same< weightset_t_of< Aut2 >, b >::value), bool >
Check equivalence between Boolean automata on a free labelset.
automaton complement(const automaton &aut)
Bridge.