17 #ifndef AWALI_ALGOS_IS_PROPER_HH
18 # define AWALI_ALGOS_IS_PROPER_HH
20 # include <type_traits>
26 namespace awali {
namespace sttc {
31 template <
typename Aut>
32 typename std::enable_if<labelset_t_of<Aut>::has_one(),
36 for (
auto t: aut->transitions())
37 if (aut->labelset()->is_one(aut->label_of(t)))
42 template <
typename Aut>
44 typename std::enable_if<!labelset_t_of<Aut>::has_one(),
51 template <
size_t I,
typename Tdc>
52 typename std::enable_if<!labelset_t_of<Tdc>::template valueset_t<I>::has_one(),
59 template <
size_t I,
typename Tdc>
60 typename std::enable_if<labelset_t_of<Tdc>::template valueset_t<I>::has_one(),
64 auto ls=tdc->context().labelset()->template set<I>();
65 for (
auto t: tdc->transitions())
66 if (ls.is_one(std::get<I>(tdc->label_of(t))))
71 template <
typename Tdc>
73 typename std::enable_if<!labelset_t_of<Tdc>::has_one(),
89 template <
typename Aut>
90 bool is_proper(
const Aut& aut) ATTRIBUTE_CONST;
92 template <
typename Aut>
99 template <
size_t I,
typename Tdc>
103 return internal::is_proper_tape_<I>(tdc);
std::enable_if< labelset_t_of< Aut >::has_one(), bool >::type is_proper_(const Aut &aut)
Definition: is_proper.hh:34
std::enable_if<!labelset_t_of< Tdc >::template valueset_t< I >::has_one(), bool >::type is_proper_tape_(const Tdc &)
Definition: is_proper.hh:54
bool is_proper(const Aut &aut) ATTRIBUTE_CONST
Test whether an automaton is proper.
Definition: is_proper.hh:94
bool is_proper_tape(const Tdc &tdc)
Definition: is_proper.hh:101
Main namespace of Awali.
Definition: ato.hh:22