3 #include <machine/amnesic/stateAcceptingAmnesicMachine.h>
4 #include <transition/amnesic/simpleAmnesicMachineTransition.h>
19 template<
typename...>
class TransitionContainer = std::vector,
20 template<
typename...>
class InitialStateContainer = std::set
27 InitialStateContainer>;
42 template<
typename...>
class TransitionContainer = std::vector,
43 template<
typename...>
class InitialStateContainer = std::set,
60 template<
typename...>
class TransitionContainer_,
61 template<
typename...>
class InitialStateContainer_,
64 class SimpleAmnesicMachine<StateType_, deterministic, acceptingStyle, TransitionContainer_, InitialStateContainer_, std::tuple<Args...>>
69 using typename SimpleAmnesicMachine_accept_impl_::StateType;
70 using typename SimpleAmnesicMachine_accept_impl_::IsAccepting;
71 using typename SimpleAmnesicMachine_accept_impl_::StorageType;
72 using typename SimpleAmnesicMachine_accept_impl_::IsAlternating;
73 using typename SimpleAmnesicMachine_accept_impl_::TransitionType;
74 using typename SimpleAmnesicMachine_accept_impl_::ApplyHelperType;
75 using typename SimpleAmnesicMachine_accept_impl_::IsDeterministic;
76 using typename SimpleAmnesicMachine_accept_impl_::TransitionContainer;
77 using typename SimpleAmnesicMachine_accept_impl_::InitialStateContainer;
78 using typename SimpleAmnesicMachine_accept_impl_::OptionalHelpedTransition;
80 static_assert(std::is_same_v<StateType, typename TransitionType::StateType>);
81 static_assert(std::is_same_v<StorageType, typename TransitionType::StorageType>);
82 static_assert(std::is_same_v<TransitionType, TransitionType_>);
83 static_assert(std::is_same_v<ApplyHelperType, typename TransitionType::ApplyHelperType>);
84 static_assert(std::is_same_v<ApplyHelperType, std::monostate>);
85 static_assert(std::is_same_v<IsDeterministic, std::integral_constant<bool, deterministic>>);
86 static_assert(std::is_same_v<TransitionContainer, TransitionContainer_<std::pair<const TransitionType& , ApplyHelperType>>>);
87 static_assert(std::is_same_v<InitialStateContainer, InitialStateContainer_<StateType>>);
88 static_assert(std::is_same_v<OptionalHelpedTransition, std::optional<std::pair<const TransitionType& , ApplyHelperType>>>);
90 static_assert(std::is_same_v<StorageType, std::monostate>,
91 "StorageType should be a word.");
92 static_assert(std::is_same_v<TransitionType_, TransitionType>,
93 "TransitionType must be SimpleAmnesicMachineTransition.");
95 "The only valid value for AcceptingConstructorArgs is the default parameter.");
112 finalStates(finalStates) {}
152 virtual bool isHaltingState(
const StateType& state)
const noexcept
override final {
153 return finalStates.count(state) > 0;