From 1819e4109e8cc84bf16088ce025fae650245f916 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sat, 17 May 2014 17:22:00 +0200
Subject: [PATCH] Deterministic, nondeterministic -> single, multi initial
 state

---
 alib2/src/automaton/FSM/CompactNFA.h                 |  4 ++--
 alib2/src/automaton/FSM/DFA.cpp                      |  2 +-
 alib2/src/automaton/FSM/DFA.h                        |  4 ++--
 alib2/src/automaton/FSM/EpsilonNFA.h                 |  4 ++--
 alib2/src/automaton/FSM/ExtendedNFA.h                |  4 ++--
 alib2/src/automaton/FSM/NFA.h                        |  4 ++--
 ...cAutomaton.cpp => MultiInitialStateAutomaton.cpp} | 12 ++++++------
 ...isticAutomaton.h => MultiInitialStateAutomaton.h} |  8 ++++----
 alib2/src/automaton/PDA/PDA.h                        |  4 ++--
 ...Automaton.cpp => SingleInitialStateAutomaton.cpp} | 10 +++++-----
 ...sticAutomaton.h => SingleInitialStateAutomaton.h} | 12 ++++++------
 alib2/src/automaton/TM/OneTapeDTM.cpp                |  2 +-
 alib2/src/automaton/TM/OneTapeDTM.h                  |  4 ++--
 13 files changed, 37 insertions(+), 37 deletions(-)
 rename alib2/src/automaton/{NondeterministicAutomaton.cpp => MultiInitialStateAutomaton.cpp} (71%)
 rename alib2/src/automaton/{NondeterministicAutomaton.h => MultiInitialStateAutomaton.h} (85%)
 rename alib2/src/automaton/{DeterministicAutomaton.cpp => SingleInitialStateAutomaton.cpp} (53%)
 rename alib2/src/automaton/{DeterministicAutomaton.h => SingleInitialStateAutomaton.h} (67%)

diff --git a/alib2/src/automaton/FSM/CompactNFA.h b/alib2/src/automaton/FSM/CompactNFA.h
index 8646067567..601043ce76 100644
--- a/alib2/src/automaton/FSM/CompactNFA.h
+++ b/alib2/src/automaton/FSM/CompactNFA.h
@@ -9,7 +9,7 @@
 #define COMPACT_DFA_H_
 
 #include <map>
-#include "../NondeterministicAutomaton.h"
+#include "../MultiInitialStateAutomaton.h"
 #include "../InputAlphabet.h"
 #include "../State.h"
 #include "../../string/String.h"
@@ -20,7 +20,7 @@ namespace automaton {
  * Represents Finite Automaton.
  * Can store nondeterministic finite automaton without epsilon transitions.
  */
-class CompactNFA : public NondeterministicAutomaton, public InputAlphabet {
+class CompactNFA : public MultiInitialStateAutomaton, public InputAlphabet {
 protected:
 	std::map<std::pair<State, string::String>, std::set<State> > transitions;
 public:
diff --git a/alib2/src/automaton/FSM/DFA.cpp b/alib2/src/automaton/FSM/DFA.cpp
index 1f9c0b1abb..340672ad43 100644
--- a/alib2/src/automaton/FSM/DFA.cpp
+++ b/alib2/src/automaton/FSM/DFA.cpp
@@ -11,7 +11,7 @@
 
 namespace automaton {
 
-DFA::DFA(const State& initialState) : DeterministicAutomaton(initialState) {
+DFA::DFA(const State& initialState) : SingleInitialStateAutomaton(initialState) {
 
 }
 
diff --git a/alib2/src/automaton/FSM/DFA.h b/alib2/src/automaton/FSM/DFA.h
index c78d931f45..0e235078c6 100644
--- a/alib2/src/automaton/FSM/DFA.h
+++ b/alib2/src/automaton/FSM/DFA.h
@@ -9,7 +9,7 @@
 #define DFA_H_
 
 #include <map>
-#include "../DeterministicAutomaton.h"
+#include "../SingleInitialStateAutomaton.h"
 #include "../InputAlphabet.h"
 #include "../State.h"
 #include "../../alphabet/Symbol.h"
@@ -20,7 +20,7 @@ namespace automaton {
  * Represents Finite Automaton.
  * Can store nondeterministic finite automaton without epsilon transitions.
  */
-class DFA : public DeterministicAutomaton, public InputAlphabet {
+class DFA : public SingleInitialStateAutomaton, public InputAlphabet {
 protected:
 	std::map<std::pair<State, alphabet::Symbol>, State> transitions;
 public:
diff --git a/alib2/src/automaton/FSM/EpsilonNFA.h b/alib2/src/automaton/FSM/EpsilonNFA.h
index 01f667d177..3146344604 100644
--- a/alib2/src/automaton/FSM/EpsilonNFA.h
+++ b/alib2/src/automaton/FSM/EpsilonNFA.h
@@ -10,7 +10,7 @@
 
 #include <map>
 #include "../../std/variant.hpp"
-#include "../NondeterministicAutomaton.h"
+#include "../MultiInitialStateAutomaton.h"
 #include "../InputAlphabet.h"
 #include "../State.h"
 #include "../../alphabet/Symbol.h"
@@ -22,7 +22,7 @@ namespace automaton {
  * Represents Finite Automaton.
  * Can store nondeterministic finite automaton with epsilon transitions.
  */
-class EpsilonNFA : public NondeterministicAutomaton, public InputAlphabet {
+class EpsilonNFA : public MultiInitialStateAutomaton, public InputAlphabet {
 protected:
 	std::map<std::pair<State, std::variant<string::Epsilon, alphabet::Symbol> >, std::set<State> > transitions;
 public:
diff --git a/alib2/src/automaton/FSM/ExtendedNFA.h b/alib2/src/automaton/FSM/ExtendedNFA.h
index e9cc2712e7..56e9d04829 100644
--- a/alib2/src/automaton/FSM/ExtendedNFA.h
+++ b/alib2/src/automaton/FSM/ExtendedNFA.h
@@ -9,7 +9,7 @@
 #define EXTENDED_NFA_H_
 
 #include <map>
-#include "../NondeterministicAutomaton.h"
+#include "../MultiInitialStateAutomaton.h"
 #include "../InputAlphabet.h"
 #include "../State.h"
 #include "../../regexp/RegExp.h"
@@ -20,7 +20,7 @@ namespace automaton {
  * Represents Finite Automaton.
  * Can store nondeterministic finite automaton without epsilon transitions.
  */
-class ExtendedNFA : public NondeterministicAutomaton, public InputAlphabet {
+class ExtendedNFA : public MultiInitialStateAutomaton, public InputAlphabet {
 protected:
 	std::map<std::pair<State, regexp::RegExp>, std::set<State> > transitions;
 public:
diff --git a/alib2/src/automaton/FSM/NFA.h b/alib2/src/automaton/FSM/NFA.h
index a223709dcd..47b9b9bd32 100644
--- a/alib2/src/automaton/FSM/NFA.h
+++ b/alib2/src/automaton/FSM/NFA.h
@@ -9,7 +9,7 @@
 #define NFA_H_
 
 #include <map>
-#include "../NondeterministicAutomaton.h"
+#include "../MultiInitialStateAutomaton.h"
 #include "../InputAlphabet.h"
 #include "../State.h"
 #include "../../alphabet/Symbol.h"
@@ -20,7 +20,7 @@ namespace automaton {
  * Represents Finite Automaton.
  * Can store nondeterministic finite automaton without epsilon transitions.
  */
-class NFA : public NondeterministicAutomaton, public InputAlphabet {
+class NFA : public MultiInitialStateAutomaton, public InputAlphabet {
 protected:
 	std::map<std::pair<State, alphabet::Symbol>, std::set<State> > transitions;
 public:
diff --git a/alib2/src/automaton/NondeterministicAutomaton.cpp b/alib2/src/automaton/MultiInitialStateAutomaton.cpp
similarity index 71%
rename from alib2/src/automaton/NondeterministicAutomaton.cpp
rename to alib2/src/automaton/MultiInitialStateAutomaton.cpp
index c6a0daf38f..c3fc15a366 100644
--- a/alib2/src/automaton/NondeterministicAutomaton.cpp
+++ b/alib2/src/automaton/MultiInitialStateAutomaton.cpp
@@ -1,11 +1,11 @@
 /*
- * NondeterministicAutomaton.cpp
+ * MultiInitialStateAutomaton.cpp
  *
  *  Created on: Apr 16, 2013
  *      Author: Jan Travnicek
  */
 
-#include "NondeterministicAutomaton.h"
+#include "MultiInitialStateAutomaton.h"
 
 #include <set>
 #include <algorithm>
@@ -13,7 +13,7 @@
 
 namespace automaton {
 
-bool NondeterministicAutomaton::addInitialState(const State& state) {
+bool MultiInitialStateAutomaton::addInitialState(const State& state) {
 	if (states.find(state) == states.end()) {
 		throw AutomatonException("State cannot be set as initial state. It is not present in the automaton.");
 	}
@@ -21,7 +21,7 @@ bool NondeterministicAutomaton::addInitialState(const State& state) {
 	return initialStates.insert(state).second;
 }
 
-void NondeterministicAutomaton::setInitialStates(const std::set<State>& newStates) {
+void MultiInitialStateAutomaton::setInitialStates(const std::set<State>& newStates) {
 	std::set<State> removed;
 	std::set_symmetric_difference(initialStates.begin(), initialStates.end(), newStates.begin(), newStates.end(), std::inserter(removed, removed.end()));
 
@@ -37,11 +37,11 @@ void NondeterministicAutomaton::setInitialStates(const std::set<State>& newState
 	}
 }
 
-bool NondeterministicAutomaton::removeInitialState(const State& state) {
+bool MultiInitialStateAutomaton::removeInitialState(const State& state) {
 	return initialStates.erase(state);
 }
 
-const std::set<State>& NondeterministicAutomaton::getInitialStates() const {
+const std::set<State>& MultiInitialStateAutomaton::getInitialStates() const {
 	return initialStates;
 }
 
diff --git a/alib2/src/automaton/NondeterministicAutomaton.h b/alib2/src/automaton/MultiInitialStateAutomaton.h
similarity index 85%
rename from alib2/src/automaton/NondeterministicAutomaton.h
rename to alib2/src/automaton/MultiInitialStateAutomaton.h
index 47517b958f..8af6741127 100644
--- a/alib2/src/automaton/NondeterministicAutomaton.h
+++ b/alib2/src/automaton/MultiInitialStateAutomaton.h
@@ -5,8 +5,8 @@
  *      Author: Jan Travnicek
  */
 
-#ifndef NONDETERMINISTIC_AUTOMATON_H_
-#define NONDETERMINISTIC_AUTOMATON_H_
+#ifndef MULTI_INITIAL_STATE_AUTOMATON_H_
+#define MULTI_INITIAL_STATE_AUTOMATON_H_
 
 #include "Automaton.h"
 #include <set>
@@ -17,7 +17,7 @@ namespace automaton {
 /**
  * Base class for nondeterministic automata.
  */
-class NondeterministicAutomaton : public Automaton {
+class MultiInitialStateAutomaton : public Automaton {
 protected:
 	std::set<State> initialStates;
 public:
@@ -52,5 +52,5 @@ public:
 
 } /* namespace automaton */
 
-#endif /* NONDETERMINISTIC_AUTOMATON_H_ */
+#endif /* MULTI_INITIAL_STATE_AUTOMATON_H_ */
 
diff --git a/alib2/src/automaton/PDA/PDA.h b/alib2/src/automaton/PDA/PDA.h
index 472873d977..b56eb2850b 100644
--- a/alib2/src/automaton/PDA/PDA.h
+++ b/alib2/src/automaton/PDA/PDA.h
@@ -12,7 +12,7 @@
 #include <map>
 #include <vector>
 #include "../../std/variant.hpp"
-#include "../NondeterministicAutomaton.h"
+#include "../MultiInitialStateAutomaton.h"
 #include "../InputAlphabet.h"
 #include "../State.h"
 #include "../../alphabet/Symbol.h"
@@ -23,7 +23,7 @@ namespace automaton {
 /**
  * Push Down Automaton
  */
-class PDA: public NondeterministicAutomaton, public InputAlphabet {
+class PDA: public MultiInitialStateAutomaton, public InputAlphabet {
 protected:
 	std::set<alphabet::Symbol> stackAlphabet;
 	std::map<std::tuple<State, std::variant<string::Epsilon, alphabet::Symbol>, std::vector<alphabet::Symbol> >, std::set<std::pair<State, std::vector<alphabet::Symbol> > > > transitions;
diff --git a/alib2/src/automaton/DeterministicAutomaton.cpp b/alib2/src/automaton/SingleInitialStateAutomaton.cpp
similarity index 53%
rename from alib2/src/automaton/DeterministicAutomaton.cpp
rename to alib2/src/automaton/SingleInitialStateAutomaton.cpp
index 2cd693a219..398fcb3ede 100644
--- a/alib2/src/automaton/DeterministicAutomaton.cpp
+++ b/alib2/src/automaton/SingleInitialStateAutomaton.cpp
@@ -1,21 +1,21 @@
 /*
- * DeterministicAutomaton.cpp
+ * SingleInitialStateAutomaton.cpp
  *
  *  Created on: Apr 16, 2013
  *      Author: Jan Travnicek
  */
 
-#include "DeterministicAutomaton.h"
+#include "SingleInitialStateAutomaton.h"
 
 #include "AutomatonException.h"
 
 namespace automaton {
 
-DeterministicAutomaton::DeterministicAutomaton(const State& initialState) : initialState(initialState) {
+SingleInitialStateAutomaton::SingleInitialStateAutomaton(const State& initialState) : initialState(initialState) {
 	addState(initialState);
 }
 
-void DeterministicAutomaton::setInitialState(const State& state) {
+void SingleInitialStateAutomaton::setInitialState(const State& state) {
 	if (states.find(state) == states.end()) {
 		throw AutomatonException("State cannot be set as initial state. It is not present in the automaton.");
 	}
@@ -23,7 +23,7 @@ void DeterministicAutomaton::setInitialState(const State& state) {
 	initialState = state;
 }
 
-const State& DeterministicAutomaton::getInitialState() const {
+const State& SingleInitialStateAutomaton::getInitialState() const {
 	return initialState;
 }
 
diff --git a/alib2/src/automaton/DeterministicAutomaton.h b/alib2/src/automaton/SingleInitialStateAutomaton.h
similarity index 67%
rename from alib2/src/automaton/DeterministicAutomaton.h
rename to alib2/src/automaton/SingleInitialStateAutomaton.h
index 6eebaa481c..c08b3b456f 100644
--- a/alib2/src/automaton/DeterministicAutomaton.h
+++ b/alib2/src/automaton/SingleInitialStateAutomaton.h
@@ -1,12 +1,12 @@
 /*
- * DeterministicAutomaton.h
+ * SingleInitialStateAutomaton.h
  *
  *  Created on: Apr 10, 2013
  *      Author: Jan Travnicek
  */
 
-#ifndef DETERMINISTIC_AUTOMATON_H_
-#define DETERMINISTIC_AUTOMATON_H_
+#ifndef SINGLE_INITIAL_STATE_AUTOMATON_H_
+#define SINGLE_INITIAL_STATE_AUTOMATON_H_
 
 #include "Automaton.h"
 #include "State.h"
@@ -16,11 +16,11 @@ namespace automaton {
 /**
  * Base class for deterministic automata. Contains common elements of automata.
  */
-class DeterministicAutomaton : public Automaton {
+class SingleInitialStateAutomaton : public Automaton {
 protected:
 	State initialState;
 public:
-	DeterministicAutomaton(const State& initialState);
+	SingleInitialStateAutomaton(const State& initialState);
 
 	/**
 	 * Set the initial state.
@@ -38,5 +38,5 @@ public:
 
 } /* namespace automaton */
 
-#endif /* DETERMINISTIC_AUTOMATON_H_ */
+#endif /* SINGLE_INITIAL_STATE_AUTOMATON_H_ */
 
diff --git a/alib2/src/automaton/TM/OneTapeDTM.cpp b/alib2/src/automaton/TM/OneTapeDTM.cpp
index d52df57d50..66b25334da 100644
--- a/alib2/src/automaton/TM/OneTapeDTM.cpp
+++ b/alib2/src/automaton/TM/OneTapeDTM.cpp
@@ -14,7 +14,7 @@ namespace automaton {
 using namespace std;
 using namespace alphabet;
 
-OneTapeDTM::OneTapeDTM(const State& initialState, const alphabet::Symbol& blank) : DeterministicAutomaton(initialState), BlankSymbolInputTapeAlphabet(blank) {
+OneTapeDTM::OneTapeDTM(const State& initialState, const alphabet::Symbol& blank) : SingleInitialStateAutomaton(initialState), BlankSymbolInputTapeAlphabet(blank) {
 }
 
 bool OneTapeDTM::removeState(const State& state) {
diff --git a/alib2/src/automaton/TM/OneTapeDTM.h b/alib2/src/automaton/TM/OneTapeDTM.h
index 3403c24ec1..390e974000 100644
--- a/alib2/src/automaton/TM/OneTapeDTM.h
+++ b/alib2/src/automaton/TM/OneTapeDTM.h
@@ -8,7 +8,7 @@
 #ifndef ONE_TAPE_DTM_H_
 #define ONE_TAPE_DTM_H_
 
-#include "../DeterministicAutomaton.h"
+#include "../SingleInitialStateAutomaton.h"
 #include "../BlankSymbolInputTapeAlphabet.h"
 #include "../Shift.h"
 
@@ -21,7 +21,7 @@ namespace automaton {
 /**
  * One tape turing machine
  */
-class OneTapeDTM : public DeterministicAutomaton, public BlankSymbolInputTapeAlphabet {
+class OneTapeDTM : public SingleInitialStateAutomaton, public BlankSymbolInputTapeAlphabet {
 protected:
 	std::map<std::pair<State, alphabet::Symbol>, std::tuple<State, alphabet::Symbol, Shift> > transitions;
 
-- 
GitLab