6 #include <machine/Turing/localTuringMachine.h>
7 #include <transition/Turing/simpleTuringMachineTransition.h>
30 bool deterministic =
false,
31 bool hasHalfTape =
false,
36 Transition::Turing::SimpleTuringMachineTransition<StateType_, SymbolType_, hasHalfTape>,
44 using typename LocalTuringMachine_::StateType;
45 using typename LocalTuringMachine_::SymbolType;
46 using typename LocalTuringMachine_::HasHalfTape;
47 using typename LocalTuringMachine_::IsAccepting;
48 using typename LocalTuringMachine_::StorageType;
49 using typename LocalTuringMachine_::IsAlternating;
50 using typename LocalTuringMachine_::TransitionType;
51 using typename LocalTuringMachine_::ApplyHelperType;
52 using typename LocalTuringMachine_::IsDeterministic;
53 using typename LocalTuringMachine_::TransitionContainer;
54 using typename LocalTuringMachine_::InitialStateContainer;
55 using typename LocalTuringMachine_::OptionalHelpedTransition;
57 static_assert(std::is_same_v<StateType, typename TransitionType::StateType>);
58 static_assert(std::is_same_v<StateType, StateType_>);
59 static_assert(std::is_same_v<SymbolType, typename StorageType::SymbolType>);
60 static_assert(std::is_same_v<SymbolType, SymbolType_>);
61 static_assert(std::is_same_v<HasHalfTape, typename TransitionType::HasHalfTape>);
62 static_assert(HasHalfTape::value == hasHalfTape);
64 static_assert(std::is_same_v<StorageType, typename TransitionType::StorageType>);
65 static_assert(std::is_same_v<ApplyHelperType, typename TransitionType::ApplyHelperType>);
66 static_assert(IsDeterministic::value == deterministic);
67 static_assert(std::is_same_v<TransitionContainer, std::set<std::pair<const TransitionType&, ApplyHelperType>>>);
68 static_assert(std::is_same_v<InitialStateContainer, std::set<StateType>>);
69 static_assert(std::is_same_v<OptionalHelpedTransition, std::optional<std::pair<const TransitionType&, ApplyHelperType>>>);
71 static_assert(std::is_same_v<ApplyHelperType, std::monostate>);
73 "TransitionType must be SimpleTuringMachineTransition");
111 virtual bool isHaltingState(
const StateType& state)
const noexcept
override final {
112 return finalStates.count(state) > 0;
116 std::set<StateType> finalStates;