From 393e246826114194924f2ddbe06228bf056c1811 Mon Sep 17 00:00:00 2001
From: Jan Vesely <janvesely@janvesely.net>
Date: Sun, 27 Apr 2014 17:59:49 +0200
Subject: [PATCH] add deterministic fsm

---
 examples/automaton/NFSM2.DET.xml | 115 +++++++++++++++++++++++++++++++
 examples/automaton/NFSM3.DET.xml |  92 +++++++++++++++++++++++++
 examples/automaton/NFSM4.DET.xml | 107 ++++++++++++++++++++++++++++
 3 files changed, 314 insertions(+)
 create mode 100644 examples/automaton/NFSM2.DET.xml
 create mode 100644 examples/automaton/NFSM3.DET.xml
 create mode 100644 examples/automaton/NFSM4.DET.xml

diff --git a/examples/automaton/NFSM2.DET.xml b/examples/automaton/NFSM2.DET.xml
new file mode 100644
index 0000000000..6c895d61bb
--- /dev/null
+++ b/examples/automaton/NFSM2.DET.xml
@@ -0,0 +1,115 @@
+<automaton>
+  <states>
+    <state>['S']</state>
+    <state>['A', 'B']</state>
+    <state>['C']</state>
+    <state>['A', 'S']</state>
+    <state>['A', 'B', 'C']</state>
+    <state>['A', 'C']</state>
+    <state>['A', 'C', 'S']</state>
+    <state>['A']</state>
+    <state>['A', 'B', 'C', 'S']</state>
+  </states>
+  <inputAlphabet>
+    <symbol>0</symbol>
+    <symbol>1</symbol>
+  </inputAlphabet>
+  <transitions>
+    <transition>
+      <from>['S']</from>
+      <input>0</input>
+      <to>['A', 'B']</to>
+    </transition>
+    <transition>
+      <from>['S']</from>
+      <input>1</input>
+      <to>['C']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B']</from>
+      <input>0</input>
+      <to>['C']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B']</from>
+      <input>1</input>
+      <to>['A', 'B']</to>
+    </transition>
+    <transition>
+      <from>['C']</from>
+      <input>0</input>
+      <to>['A', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'S']</from>
+      <input>0</input>
+      <to>['A', 'B', 'C']</to>
+    </transition>
+    <transition>
+      <from>['A', 'S']</from>
+      <input>1</input>
+      <to>['A', 'C']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C']</from>
+      <input>0</input>
+      <to>['A', 'C', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C']</from>
+      <input>1</input>
+      <to>['A', 'B']</to>
+    </transition>
+    <transition>
+      <from>['A', 'C']</from>
+      <input>0</input>
+      <to>['A', 'C', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'C']</from>
+      <input>1</input>
+      <to>['A']</to>
+    </transition>
+    <transition>
+      <from>['A', 'C', 'S']</from>
+      <input>0</input>
+      <to>['A', 'B', 'C', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'C', 'S']</from>
+      <input>1</input>
+      <to>['A', 'C']</to>
+    </transition>
+    <transition>
+      <from>['A']</from>
+      <input>0</input>
+      <to>['C']</to>
+    </transition>
+    <transition>
+      <from>['A']</from>
+      <input>1</input>
+      <to>['A']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C', 'S']</from>
+      <input>0</input>
+      <to>['A', 'B', 'C', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C', 'S']</from>
+      <input>1</input>
+      <to>['A', 'B', 'C']</to>
+    </transition>
+  </transitions>
+  <initialStates>
+    <state>['S']</state>
+  </initialStates>
+  <finalStates>
+    <state>['A', 'B']</state>
+    <state>['C']</state>
+    <state>['A', 'B', 'C']</state>
+    <state>['A', 'C']</state>
+    <state>['A', 'C', 'S']</state>
+    <state>['A', 'B', 'C', 'S']</state>
+  </finalStates>
+</automaton>
diff --git a/examples/automaton/NFSM3.DET.xml b/examples/automaton/NFSM3.DET.xml
new file mode 100644
index 0000000000..27d0cd15bb
--- /dev/null
+++ b/examples/automaton/NFSM3.DET.xml
@@ -0,0 +1,92 @@
+<automaton>
+  <states>
+    <state>['S']</state>
+    <state>['A', 'S']</state>
+    <state>['B']</state>
+    <state>['A', 'B', 'C']</state>
+    <state>['A', 'C', 'S']</state>
+    <state>['A', 'B', 'S']</state>
+    <state>['A', 'B', 'C', 'S']</state>
+  </states>
+  <inputAlphabet>
+    <symbol>0</symbol>
+    <symbol>1</symbol>
+  </inputAlphabet>
+  <transitions>
+    <transition>
+      <from>['S']</from>
+      <input>0</input>
+      <to>['A', 'S']</to>
+    </transition>
+    <transition>
+      <from>['S']</from>
+      <input>1</input>
+      <to>['B']</to>
+    </transition>
+    <transition>
+      <from>['A', 'S']</from>
+      <input>0</input>
+      <to>['A', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'S']</from>
+      <input>1</input>
+      <to>['A', 'B', 'C']</to>
+    </transition>
+    <transition>
+      <from>['B']</from>
+      <input>1</input>
+      <to>['S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C']</from>
+      <input>0</input>
+      <to>['B']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C']</from>
+      <input>1</input>
+      <to>['A', 'C', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'C', 'S']</from>
+      <input>0</input>
+      <to>['A', 'B', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'C', 'S']</from>
+      <input>1</input>
+      <to>['A', 'B', 'C']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'S']</from>
+      <input>0</input>
+      <to>['A', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'S']</from>
+      <input>1</input>
+      <to>['A', 'B', 'C', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C', 'S']</from>
+      <input>0</input>
+      <to>['A', 'B', 'S']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C', 'S']</from>
+      <input>1</input>
+      <to>['A', 'B', 'C', 'S']</to>
+    </transition>
+  </transitions>
+  <initialStates>
+    <state>['S']</state>
+  </initialStates>
+  <finalStates>
+    <state>['B']</state>
+    <state>['A', 'B', 'C']</state>
+    <state>['A', 'C', 'S']</state>
+    <state>['A', 'B', 'S']</state>
+    <state>['A', 'B', 'C', 'S']</state>
+  </finalStates>
+</automaton>
diff --git a/examples/automaton/NFSM4.DET.xml b/examples/automaton/NFSM4.DET.xml
new file mode 100644
index 0000000000..c4b79b3e7d
--- /dev/null
+++ b/examples/automaton/NFSM4.DET.xml
@@ -0,0 +1,107 @@
+<automaton>
+  <states>
+    <state>['A']</state>
+    <state>['A', 'B']</state>
+    <state>['A', 'E']</state>
+    <state>['A', 'B', 'C']</state>
+    <state>['A', 'B', 'F']</state>
+    <state>['A', 'D', 'E']</state>
+    <state>['A', 'B', 'D', 'F']</state>
+    <state>['A', 'B', 'C', 'D']</state>
+  </states>
+  <inputAlphabet>
+    <symbol>a</symbol>
+    <symbol>b</symbol>
+  </inputAlphabet>
+  <transitions>
+    <transition>
+      <from>['A']</from>
+      <input>a</input>
+      <to>['A', 'B']</to>
+    </transition>
+    <transition>
+      <from>['A']</from>
+      <input>b</input>
+      <to>['A', 'E']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B']</from>
+      <input>a</input>
+      <to>['A', 'B', 'C']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B']</from>
+      <input>b</input>
+      <to>['A', 'E']</to>
+    </transition>
+    <transition>
+      <from>['A', 'E']</from>
+      <input>a</input>
+      <to>['A', 'B', 'F']</to>
+    </transition>
+    <transition>
+      <from>['A', 'E']</from>
+      <input>b</input>
+      <to>['A', 'D', 'E']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C']</from>
+      <input>a</input>
+      <to>['A', 'B', 'C', 'D']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C']</from>
+      <input>b</input>
+      <to>['A', 'D', 'E']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'F']</from>
+      <input>a</input>
+      <to>['A', 'B', 'C']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'F']</from>
+      <input>b</input>
+      <to>['A', 'D', 'E']</to>
+    </transition>
+    <transition>
+      <from>['A', 'D', 'E']</from>
+      <input>a</input>
+      <to>['A', 'B', 'D', 'F']</to>
+    </transition>
+    <transition>
+      <from>['A', 'D', 'E']</from>
+      <input>b</input>
+      <to>['A', 'D', 'E']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'D', 'F']</from>
+      <input>a</input>
+      <to>['A', 'B', 'C', 'D']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'D', 'F']</from>
+      <input>b</input>
+      <to>['A', 'D', 'E']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C', 'D']</from>
+      <input>a</input>
+      <to>['A', 'B', 'C', 'D']</to>
+    </transition>
+    <transition>
+      <from>['A', 'B', 'C', 'D']</from>
+      <input>b</input>
+      <to>['A', 'D', 'E']</to>
+    </transition>
+  </transitions>
+  <initialStates>
+    <state>['A']</state>
+  </initialStates>
+  <finalStates>
+    <state>['A', 'E']</state>
+    <state>['A', 'D', 'E']</state>
+    <state>['A', 'B', 'D', 'F']</state>
+    <state>['A', 'B', 'C', 'D']</state>
+  </finalStates>
+</automaton>
-- 
GitLab