Vcsn  2.4
Be Rational
lal_char_b.hh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vcsn/ctx/context.hh>
4 #include <vcsn/ctx/lal_char.hh>
5 #include <vcsn/weightset/b.hh>
6 
7 namespace vcsn
8 {
9  namespace ctx
10  {
12  }
13 }
14 
16 #include <vcsn/algos/complement.hh>
18 #include <vcsn/algos/universal.hh>
19 #include <vcsn/ctx/instantiate.hh>
20 #include <vcsn/misc/attributes.hh>
21 
22 namespace vcsn
23 {
25 #if 0
26  MAYBE_EXTERN template
27  auto
28  determinize(const mutable_automaton<ctx::lal_char_b>& aut)
29  -> mutable_automaton<ctx::lal_char_b>;
30 
31  /* fado. */
32  MAYBE_EXTERN template
33  std::ostream& fado<mutable_automaton<ctx::lal_char_b>>
34  (const mutable_automaton<ctx::lal_char_b>& aut, std::ostream& out);
35 
36  MAYBE_EXTERN template
37  std::ostream&
38  fado<vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>>
39  (const vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>& aut,
40  std::ostream& out);
41 
42  /* grail. */
43  MAYBE_EXTERN template
44  std::ostream& grail<mutable_automaton<ctx::lal_char_b>>
45  (const mutable_automaton<ctx::lal_char_b>& aut, std::ostream& out);
46 
47  MAYBE_EXTERN template
48  std::ostream&
49  grail<vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>>
50  (const vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>& aut,
51  std::ostream& out);
52 #endif
53 
54 #if VCSN_INSTANTIATION
55  namespace ctx
56  {
57  namespace detail
58  {
59  template <typename Ctx>
60  bool
61  register_b_functions()
62  {
63  using ctx_t = Ctx;
64  using aut_t = mutable_automaton<ctx_t>;
65  using rs_t = expressionset<ctx_t>;
66 
67 # define REGISTER(Algo, ...) \
68  dyn::detail::Algo ## _register(ssignature<__VA_ARGS__>(), \
69  dyn::detail::Algo<__VA_ARGS__>)
70 
71  REGISTER(are_equivalent, aut_t, aut_t);
72  REGISTER(complement, aut_t);
74  REGISTER(universal, aut_t);
75 # undef REGISTER
76 
77  return true;
78  }
79 
80  static bool register_lal_char_b ATTRIBUTE_USED
81  = register_b_functions<ctx::lal_char_b>();
82  }
83  }
84 #endif // ! VCSN_INSTANTIATION
85 }
Aut universal(const Aut &a)
Definition: universal.hh:135
auto determinize(const Aut &a, Tag={}, bool_constant< Lazy >={})
Definition: determinize.hh:247
#define MAYBE_EXTERN
Definition: instantiate.hh:407
Definition: a-star.hh:8
auto out(const Aut &aut, state_t_of< Aut > s)
Indexes of visible transitions leaving state s.
Definition: automaton.hh:85
#define REGISTER(Algo,...)
Definition: instantiate.hh:134
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.
ExpSet::value_t star_normal_form(const ExpSet &rs, const typename ExpSet::value_t &e)
Star-normal form of an expression.
context< lal_char, b > lal_char_b
Definition: lal_char_b.hh:11
VCSN_CTX_INSTANTIATE(ctx::lal_char_b)