Vcsn  2.1
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>
19 #include <vcsn/algos/universal.hh>
20 #include <vcsn/ctx/instantiate.hh>
21 #include <vcsn/misc/attributes.hh>
22 #include <vcsn/misc/name.hh>
23 
24 namespace vcsn
25 {
27 #if 0
28  MAYBE_EXTERN template
29  auto
30  determinize(const mutable_automaton<ctx::lal_char_b>& aut)
31  -> mutable_automaton<ctx::lal_char_b>;
32 
33  /* fado. */
34  MAYBE_EXTERN template
35  std::ostream& fado<mutable_automaton<ctx::lal_char_b>>
36  (const mutable_automaton<ctx::lal_char_b>& aut, std::ostream& out);
37 
38  MAYBE_EXTERN template
39  std::ostream&
40  fado<vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>>
41  (const vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>& aut,
42  std::ostream& out);
43 
44  /* grail. */
45  MAYBE_EXTERN template
46  std::ostream& grail<mutable_automaton<ctx::lal_char_b>>
47  (const mutable_automaton<ctx::lal_char_b>& aut, std::ostream& out);
48 
49  MAYBE_EXTERN template
50  std::ostream&
51  grail<vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>>
52  (const vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>& aut,
53  std::ostream& out);
54 #endif
55 
56 #if VCSN_INSTANTIATION
57  namespace ctx
58  {
59  namespace detail
60  {
61  template <typename Ctx>
62  bool
63  register_b_functions()
64  {
65  using ctx_t = Ctx;
66  using aut_t = mutable_automaton<ctx_t>;
67  using rs_t = expressionset<ctx_t>;
68 
69 # define REGISTER(Algo, ...) \
70  Algo ## _register(ssignature<__VA_ARGS__>(), dyn::detail::Algo<__VA_ARGS__>)
71 
72  REGISTER(are_equivalent, aut_t, aut_t);
73  REGISTER(complement, aut_t);
74  REGISTER(determinize, aut_t, const std::string);
76  REGISTER(universal, aut_t);
77 # undef REGISTER
78 
79  return true;
80  }
81 
82  static bool register_lal_char_b ATTRIBUTE_USED
83  = register_b_functions<ctx::lal_char_b>();
84  }
85  }
86 #endif // ! VCSN_INSTANTIATION
87 }
context< lal_char, b > lal_char_b
Definition: lal_char_b.hh:11
ExpSet::value_t star_normal_form(const ExpSet &rs, const typename ExpSet::value_t &e)
Star-normal form of an expression.
#define MAYBE_EXTERN
Definition: instantiate.hh:400
VCSN_CTX_INSTANTIATE(ctx::lal_char_b)
auto are_equivalent(const Aut1 &a1, const Aut2 &a2) -> vcsn::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.
Aut universal(const Aut &a)
Definition: universal.hh:124
static dyn::context ctx(const driver &d)
Get the context of the driver.
Definition: parse.cc:80
auto determinize(const Aut &a) -> determinized_automaton< Aut >
Definition: determinize.hh:251
#define REGISTER(Algo,...)
Definition: instantiate.hh:134