5 #include <machine/Turing/localTuringMachine.h>
6 #include <state/mConfiguration/mConfigurationMap.h>
7 #include <transition/Turing/turingStyleMConfigurationTuringMachineTransition.h>
26 bool deterministic =
false,
27 bool hasHalfTape =
false,
32 Transition::Turing::TuringStyleMConfigurationTuringMachineTransition<SymbolType_, hasHalfTape>,
42 using typename LocalTuringMachine_::StateType;
43 using typename LocalTuringMachine_::SymbolType;
44 using typename LocalTuringMachine_::HasHalfTape;
45 using typename LocalTuringMachine_::IsAccepting;
46 using typename LocalTuringMachine_::StorageType;
47 using typename LocalTuringMachine_::IsAlternating;
48 using typename LocalTuringMachine_::TransitionType;
49 using typename LocalTuringMachine_::ApplyHelperType;
50 using typename LocalTuringMachine_::IsDeterministic;
51 using typename LocalTuringMachine_::TransitionContainer;
52 using typename LocalTuringMachine_::InitialStateContainer;
53 using typename LocalTuringMachine_::OptionalHelpedTransition;
55 static_assert(std::is_same_v<StateType, typename TransitionType::StateType>);
56 static_assert(std::is_same_v<SymbolType, typename StorageType::SymbolType>);
57 static_assert(std::is_same_v<SymbolType, SymbolType_>);
58 static_assert(std::is_same_v<HasHalfTape, typename TransitionType::HasHalfTape>);
59 static_assert(HasHalfTape::value == hasHalfTape);
61 static_assert(std::is_same_v<StorageType, typename TransitionType::StorageType>);
62 static_assert(std::is_same_v<ApplyHelperType, typename TransitionType::ApplyHelperType>);
63 static_assert(IsDeterministic::value == deterministic);
64 static_assert(std::is_same_v<TransitionContainer, std::set<std::pair<const TransitionType&, ApplyHelperType>>>);
65 static_assert(std::is_same_v<InitialStateContainer, std::set<StateType>>);
66 static_assert(std::is_same_v<OptionalHelpedTransition, std::optional<std::pair<const TransitionType&, ApplyHelperType>>>);
69 "StateType must be std::shared_ptr<State::MConfiguration<SymbolType>>");
71 "TransitionType must be a TuringStyleMConfigurationTuringMachineTransition");
98 finalStates(finalStates)
114 virtual bool isHaltingState(
const StateType& state)
const noexcept
override final {
115 return finalStates.count(*state) > 0;
119 std::set<State::MConfiguration::MConfiguration<SymbolType>> finalStates;