diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index da4ca559ba54fcf96a9650b3cbd7c5609e848397..64adccc29dc93299a116f351f0c99e4509288eeb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -30,3 +30,27 @@ test:
     paths:
       - build/distributions
       - build/libs
+
+deploy:
+  stage: deploy
+  only:
+    - master@general/stups/prob2-jupyter-kernel
+  needs:
+    - test
+  image: alpine:3
+  before_script:
+    - apk update
+    - apk add lftp openssh-client
+  script:
+    - |
+      filename="$(echo build/libs/prob2-jupyter-kernel-*-all.jar)"
+      case "${filename}" in
+        (*-SNAPSHOT-all.jar)
+          # Don't upload SNAPSHOT builds
+        ;;
+        
+        (*-all.jar)
+          # Do upload release builds
+          LFTP_PASSWORD="${DEPLOY_PASSWORD}" lftp -c "set cmd:fail-exit true; set sftp:auto-confirm true; open --user ${DEPLOY_USERNAME} --env-password sftp://${DEPLOY_HOST}/${DEPLOY_REMOTE_BASEDIR}/downloads/prob2-jupyter/; mput build/libs/prob2-jupyter-kernel-*-all.jar"
+        ;;
+      esac
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a41a539ce922a104a6ae0c0088ce9652d134e88d..7aa262a0be397f2bcae4fa27dfcc03af6c8ddcaa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,16 @@
 # Changelog
 
-## [(next version)](https://gitlab.cs.uni-duesseldorf.de/api/v4/projects/848/jobs/artifacts/master/raw/build/libs/prob2-jupyter-kernel-1.3.1-SNAPSHOT-all.jar?job=test)
+## [(next version)](https://gitlab.cs.uni-duesseldorf.de/api/v4/projects/848/jobs/artifacts/master/raw/build/libs/prob2-jupyter-kernel-1.4.2-SNAPSHOT-all.jar?job=test)
 
-* Updated ProB 2 to version 4.0.0-SNAPSHOT.
+* (no changes yet)
+
+## [1.4.1](https://stups.hhu-hosting.de/downloads/prob2-jupyter/prob2-jupyter-kernel-1.4.1-all.jar)
+
+* Updated to ProB 1.12.1 (ProB Java API version 4.12.1).
+
+## [1.4.0](https://stups.hhu-hosting.de/downloads/prob2-jupyter/prob2-jupyter-kernel-1.4.0-all.jar)
+
+* Updated to ProB 1.12.0 (ProB Java API version 4.12.0).
 * Added position information to formula evaluation errors (e. g. type or well-definedness errors).
 * Changed `:exec` and `:init` to automatically set up constants and initialize the machine if necessary. Previously this caused an error "Machine is not initialised".
 * Rewrote the kernel installation code in Python. This is mostly an internal change and shouldn't affect most users. As a side effect, uninstalling the kernel is now simpler and requires no extra steps after `jupyter kernelspec remove`.
diff --git a/README.md b/README.md
index 6b656381f0ec73756be8bdf4b9658d2bc89f3461..b80d0738380e89dae162065841f9674cca01ec16 100644
--- a/README.md
+++ b/README.md
@@ -8,9 +8,9 @@ This is a [Jupyter](https://jupyter.org/) kernel for the [ProB animator and mode
 
 ## Downloads
 
-* **[Download the latest version of the ProB2 Jupyter kernel here](https://stups.hhu-hosting.de/downloads/prob2-jupyter/prob2-jupyter-kernel-1.3.0-all.jar).**
+* **[Download the latest version of the ProB2 Jupyter kernel here](https://stups.hhu-hosting.de/downloads/prob2-jupyter/prob2-jupyter-kernel-1.4.1-all.jar).**
 * Download links for previous versions can be found in the [changelog].
-* A [snapshot build](https://gitlab.cs.uni-duesseldorf.de/api/v4/projects/848/jobs/artifacts/master/raw/build/libs/prob2-jupyter-kernel-1.3.1-SNAPSHOT-all.jar?job=test) of the latest development version is also available. **Warning:** this is an unstable version that can contain bugs or breaking changes.
+* A [snapshot build](https://gitlab.cs.uni-duesseldorf.de/api/v4/projects/848/jobs/artifacts/master/raw/build/libs/prob2-jupyter-kernel-1.4.2-SNAPSHOT-all.jar?job=test) of the latest development version is also available. **Warning:** this is an unstable version that can contain bugs or breaking changes.
 
 See the [requirements](#requirements) and [installation instructions](#installation) for information on how to install and use the downloaded jar file.
 
@@ -31,17 +31,10 @@ See the [requirements](#requirements) and [installation instructions](#installat
 1. Ensure that all [requirements](#requirements) are installed.
 2. [Download the latest version of the kernel](#downloads).
 3. If Jupyter is installed in a virtual environment, activate it.
-4. Run `java -jar <jarfile> install` to install the kernel. (`<jarfile>` is the name of the jar file that you just downloaded.)
-	* If you get a permission error when installing the kernel spec, add the option `--user` after `install`. This will install the kernel spec into your user home instead of the Python install directory (which may not be writable).
-	* This assumes that Jupyter can be called using the command `jupyter`. To use a different command in place of `jupyter`, pass it as an argument after `install`, e. g. `java -jar <jarfile> install /path/to/jupyter`.
-	* To use a different ProB home directory than the default, pass `-Dprob.home=/path/to/prob/home` before the `-jar` option. (The path must be absolute.)
-5. (Optional) The jar file can be deleted after installation.
-<!--
-New instructions once the next version is released:
 4. Run `python3 <jarfile> install` to install the kernel. (`<jarfile>` is the name of the jar file that you just downloaded. Yes, you need to run the jar file using Python.)
 	* If you get a permission error when installing the kernel spec, add the option `--user` after `install`. This will install the kernel spec into your user home instead of the Python install directory (which may not be writable).
 	* To use a different ProB home directory than the default, set the environment variable `PROB_HOME` to the desired path. (The path must be absolute.)
--->
+5. (Optional) The jar file can be deleted after installation.
 
 ### For developers
 
diff --git a/build.gradle b/build.gradle
index 8313c6ddf1ebcf4c015c3e221526dc93e828dbf1..d0b2b41372c463277317abe3bfd831ee3370527e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,16 +8,12 @@ plugins {
 	id("com.github.johnrengelman.shadow").version("7.1.2")
 }
 
-version = "1.3.1-SNAPSHOT"
+version = "1.4.2-SNAPSHOT"
 
 final isSnapshot = project.version.endsWith("-SNAPSHOT")
 
 final SOURCE_ENCODING = "UTF-8"
 
-wrapper {
-	gradleVersion = "7.6"
-}
-
 repositories {
 	mavenCentral()
 	if (isSnapshot) {
@@ -35,11 +31,11 @@ configurations.all {
 }
 
 dependencies {
-	implementation(group: "ch.qos.logback", name: "logback-classic", version: "1.3.5")
+	implementation(group: "ch.qos.logback", name: "logback-classic", version: "1.3.7")
 	implementation(group: "com.google.guava", name: "guava", version: "31.1-jre")
-	implementation(group: "de.hhu.stups", name: "de.prob2.kernel", version: "4.0.0-SNAPSHOT")
+	implementation(group: "de.hhu.stups", name: "de.prob2.kernel", version: "4.12.1")
 	implementation(group: "io.github.spencerpark", name: "jupyter-jvm-basekernel", version: "2.3.0")
-	implementation(group: "org.jetbrains", name: "annotations", version: "23.1.0")
+	implementation(group: "org.jetbrains", name: "annotations", version: "24.0.1")
 	implementation(group: "se.sawano.java", name: "alphanumeric-comparator", version: "1.4.1")
 }
 
@@ -79,6 +75,6 @@ task installKernelSpec(type: Exec) {
 	executable = project.hasProperty("pythonCommand") ? project.pythonCommand : "python3"
 	args = [shadowJar.archiveFile.get().asFile, "--jar-path=" + shadowJar.archiveFile.get().asFile, "install"]
 	if (project.hasProperty("kernelspecUserInstall") && project.kernelspecUserInstall == "true") {
-		args << "--user"
+		args("--user")
 	}
 }
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 943f0cbfa754578e88a3dae77fce6e3dea56edbf..c1962a79e29d3e0ab67b14947c167a862655af9b 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index f398c33c4b08dabb3f1275e57706c2de4effb50c..37aef8d3f0c9fffa920a8290320a6c78095e1591 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
 networkTimeout=10000
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index 65dcd68d65c82f2a5338fded4af852f9caf93b93..aeb74cbb43e3931a2455a838345c3f6b8131aaa2 100755
--- a/gradlew
+++ b/gradlew
@@ -85,9 +85,6 @@ done
 APP_BASE_NAME=${0##*/}
 APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
 
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD=maximum
 
@@ -144,7 +141,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
     case $MAX_FD in #(
       max*)
         # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
-        # shellcheck disable=SC3045 
+        # shellcheck disable=SC3045
         MAX_FD=$( ulimit -H -n ) ||
             warn "Could not query maximum file descriptor limit"
     esac
@@ -152,7 +149,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
       '' | soft) :;; #(
       *)
         # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
-        # shellcheck disable=SC3045 
+        # shellcheck disable=SC3045
         ulimit -n "$MAX_FD" ||
             warn "Could not set maximum file descriptor limit to $MAX_FD"
     esac
@@ -197,6 +194,10 @@ if "$cygwin" || "$msys" ; then
     done
 fi
 
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
 # Collect all arguments for the java command;
 #   * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
 #     shell script including quotes and variable substitutions, so put them in
diff --git a/notebooks/experiments/SMT_Translation_Experiments.ipynb b/notebooks/experiments/SMT_Translation_Experiments.ipynb
index 36751390c3963ac242cce07026426ea19a692307..ba6a80cadc917c0a0a98d0c0f01992cfe2421687 100644
--- a/notebooks/experiments/SMT_Translation_Experiments.ipynb
+++ b/notebooks/experiments/SMT_Translation_Experiments.ipynb
@@ -15,12 +15,25 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "CommandExecutionException",
-     "evalue": ":solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[1m\u001b[31m:solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available\u001b[0m"
-     ]
+     "data": {
+      "text/markdown": [
+       "$\\mathit{TRUE}$\n",
+       "\n",
+       "**Solution:**\n",
+       "* $\\mathit{r} = \\{2\\}$\n",
+       "* $\\mathit{f} = \\{(1\\mapsto 3),(2\\mapsto 6)\\}$"
+      ],
+      "text/plain": [
+       "TRUE\n",
+       "\n",
+       "Solution:\n",
+       "\tr = {2}\n",
+       "\tf = {(1↦3),(2↦6)}"
+      ]
+     },
+     "execution_count": 1,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -33,12 +46,17 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "CommandExecutionException",
-     "evalue": ":solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[1m\u001b[31m:solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available\u001b[0m"
-     ]
+     "data": {
+      "text/markdown": [
+       "$\\mathit{FALSE}$"
+      ],
+      "text/plain": [
+       "FALSE"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -104,10 +122,10 @@
     {
      "data": {
       "text/markdown": [
-       "Execution time: 0.359755436 seconds"
+       "Execution time: 0.453966125 seconds"
       ],
       "text/plain": [
-       "Execution time: 0.359755436 seconds"
+       "Execution time: 0.453966125 seconds"
       ]
      },
      "metadata": {},
@@ -210,11 +228,12 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "CommandExecutionException",
-     "evalue": ":solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available",
+     "ename": "WithSourceCodeException",
+     "evalue": "de.prob.exception.ProBError: Computation not completed\nProB returned error messages:\nError: no solution found (but one might exist), reason: solver_answered_unknown",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[31m:solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available\u001b[0m"
+      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mComputation not completed\u001b[0m",
+      "\u001b[1m\u001b[31mError: no solution found (but one might exist), reason: solver_answered_unknown\u001b[0m"
      ]
     }
    ],
@@ -238,11 +257,12 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "CommandExecutionException",
-     "evalue": ":solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available",
+     "ename": "WithSourceCodeException",
+     "evalue": "de.prob.exception.ProBError: Computation not completed\nProB returned error messages:\nError: no solution found (but one might exist), reason: solver_answered_unknown",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[31m:solve: Computation not completed: no solution found (but one might exist), reason: solver_not_available\u001b[0m"
+      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mComputation not completed\u001b[0m",
+      "\u001b[1m\u001b[31mError: no solution found (but one might exist), reason: solver_answered_unknown\u001b[0m"
      ]
     }
    ],
diff --git a/notebooks/manual/ExternalFunctions.ipynb b/notebooks/manual/ExternalFunctions.ipynb
index faa876f364d5ed10ec65fabe45c22a9fb9920753..6ac06ec5d81e8f3aa7db3e840a39938b004a5c0f 100644
--- a/notebooks/manual/ExternalFunctions.ipynb
+++ b/notebooks/manual/ExternalFunctions.ipynb
@@ -416,7 +416,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -498,7 +498,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -2391,14 +2391,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: state Pages: 1 -->\n",
        "<svg width=\"176pt\" height=\"131pt\"\n",
        " viewBox=\"0.00 0.00 176.00 131.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 127)\">\n",
        "<title>state</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-127 172,-127 172,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-127 172,-127 172,4 -4,4\"/>\n",
        "<!-- 4 -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>4</title>\n",
@@ -2414,15 +2414,15 @@
        "<!-- 4&#45;&gt;3 -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>4&#45;&gt;3</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M14.23,-86.67C8.69,-76.96 4.4,-64.68 9,-54 10.57,-50.36 12.72,-46.92 15.21,-43.72\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"17.81,-46.06 21.93,-36.3 12.62,-41.36 17.81,-46.06\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M14.23,-86.67C8.69,-76.96 4.4,-64.68 9,-54 10.48,-50.57 12.48,-47.31 14.79,-44.27\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"16.86,-47.08 20.93,-37.3 11.65,-42.41 16.86,-47.08\"/>\n",
        "<text text-anchor=\"middle\" x=\"16.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">rel</text>\n",
        "</g>\n",
        "<!-- 3&#45;&gt;4 -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>3&#45;&gt;4</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M42.16,-36.18C39.56,-47.81 36.07,-63.42 33.09,-76.73\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"29.61,-76.28 30.84,-86.8 36.44,-77.8 29.61,-76.28\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M42.1,-36.47C39.52,-47.97 36.1,-63.28 33.17,-76.41\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"29.61,-75.28 30.84,-85.8 36.44,-76.8 29.61,-75.28\"/>\n",
        "<text text-anchor=\"middle\" x=\"45.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">rel</text>\n",
        "</g>\n",
        "<!-- 2 -->\n",
@@ -2434,8 +2434,8 @@
        "<!-- 2&#45;&gt;3 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>2&#45;&gt;3</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.62,-86.8C95.6,-74.47 80.58,-57.68 68.25,-43.89\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"70.63,-41.3 61.36,-36.18 65.41,-45.96 70.63,-41.3\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M106.62,-86.8C95.77,-74.67 81.06,-58.21 68.84,-44.55\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"71.89,-42.59 62.62,-37.47 66.67,-47.25 71.89,-42.59\"/>\n",
        "<text text-anchor=\"middle\" x=\"95.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">rel</text>\n",
        "</g>\n",
        "<!-- 1 -->\n",
@@ -2447,15 +2447,15 @@
        "<!-- 2&#45;&gt;1 -->\n",
        "<g id=\"edge4\" class=\"edge\">\n",
        "<title>2&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M120.44,-86.62C120.04,-76.88 120.32,-64.61 123,-54 123.72,-51.14 124.71,-48.26 125.86,-45.43\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"129.12,-46.72 130.2,-36.18 122.78,-43.75 129.12,-46.72\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M120.44,-86.62C120.04,-76.88 120.32,-64.61 123,-54 123.67,-51.33 124.58,-48.64 125.63,-45.99\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"129.15,-47.73 130.2,-37.18 122.8,-44.77 129.15,-47.73\"/>\n",
        "<text text-anchor=\"middle\" x=\"130.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">rel</text>\n",
        "</g>\n",
        "<!-- 1&#45;&gt;2 -->\n",
        "<g id=\"edge5\" class=\"edge\">\n",
        "<title>1&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M141.52,-36.36C141.42,-46.09 140.65,-58.37 138,-69 137.33,-71.7 136.45,-74.45 135.45,-77.16\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"132.11,-76.08 131.46,-86.65 138.56,-78.8 132.11,-76.08\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M141.52,-36.36C141.42,-46.09 140.65,-58.37 138,-69 137.37,-71.52 136.57,-74.07 135.65,-76.6\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"132.08,-75.08 131.46,-85.65 138.54,-77.78 132.08,-75.08\"/>\n",
        "<text text-anchor=\"middle\" x=\"147.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">rel</text>\n",
        "</g>\n",
        "</g>\n",
@@ -2550,10 +2550,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"1.11.1-final\"}$"
+       "$\\text{\"1.12.0-final\"}$"
       ],
       "text/plain": [
-       "\"1.11.1-final\""
+       "\"1.12.0-final\""
       ]
      },
      "execution_count": 90,
@@ -2573,10 +2573,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"1125ea39af78125a39093c65a0af783b7636b362\"}$"
+       "$\\text{\"fef4b935b59d76e353ab67230f6206b15f903f4b\"}$"
       ],
       "text/plain": [
-       "\"1125ea39af78125a39093c65a0af783b7636b362\""
+       "\"fef4b935b59d76e353ab67230f6206b15f903f4b\""
       ]
      },
      "execution_count": 91,
@@ -2596,10 +2596,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"Wed Dec 29 13:14:39 2021 +0100\"}$"
+       "$\\text{\"Wed Apr 5 14:57:01 2023 +0200\"}$"
       ],
       "text/plain": [
-       "\"Wed Dec 29 13:14:39 2021 +0100\""
+       "\"Wed Apr 5 14:57:01 2023 +0200\""
       ]
      },
      "execution_count": 92,
@@ -2619,10 +2619,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"1.17.35\\\"\\n\"}$"
+       "$\\text{\"1.17.0.6+10\"}$"
       ],
       "text/plain": [
-       "\"1.17.35\\\"\\n\""
+       "\"1.17.0.6+10\""
       ]
      },
      "execution_count": 93,
@@ -2665,10 +2665,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"6/1/2022 - 13h37 50s\"}$"
+       "$\\text{\"25/4/2023 - 11h23 27s\"}$"
       ],
       "text/plain": [
-       "\"6/1/2022 - 13h37 50s\""
+       "\"25/4/2023 - 11h23 27s\""
       ]
      },
      "execution_count": 95,
@@ -2704,10 +2704,10 @@
     {
      "data": {
       "text/markdown": [
-       "$166651936$"
+       "$168811280$"
       ],
       "text/plain": [
-       "166651936"
+       "168811280"
       ]
      },
      "execution_count": 96,
@@ -2819,10 +2819,10 @@
     {
      "data": {
       "text/markdown": [
-       "$1641472670$"
+       "$1682414607$"
       ],
       "text/plain": [
-       "1641472670"
+       "1682414607"
       ]
      },
      "execution_count": 101,
@@ -2842,10 +2842,10 @@
     {
      "data": {
       "text/markdown": [
-       "$2295$"
+       "$4273$"
       ],
       "text/plain": [
-       "2295"
+       "4273"
       ]
      },
      "execution_count": 102,
@@ -2865,10 +2865,10 @@
     {
      "data": {
       "text/markdown": [
-       "$18724$"
+       "$18128$"
       ],
       "text/plain": [
-       "18724"
+       "18128"
       ]
      },
      "execution_count": 103,
@@ -3130,7 +3130,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -3153,7 +3153,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -3176,7 +3176,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -3199,7 +3199,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -3222,7 +3222,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -3245,7 +3245,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -3268,10 +3268,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\{\\text{\"9541282a9b1c250d7244201817fbc6f332a22940\"}\\}$"
+       "$\\{\\text{\"1e2334f66e80dac4a856a360e3e9add2c7fd9e58\"}\\}$"
       ],
       "text/plain": [
-       "{\"9541282a9b1c250d7244201817fbc6f332a22940\"}"
+       "{\"1e2334f66e80dac4a856a360e3e9add2c7fd9e58\"}"
       ]
      },
      "execution_count": 119,
@@ -4415,7 +4415,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 6,\\mathit{position}\\in 1,\\mathit{string}\\in\\text{\"abcdef\"},\\mathit{submatches}\\in\\emptyset)$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 6,\\mathit{position}\\in 1,\\mathit{string}\\in\\text{\"abcdef\"},\\mathit{submatches}\\in\\emptyset)$"
       ],
       "text/plain": [
        "rec(length∈6,position∈1,string∈\"abcdef\",submatches∈∅)"
@@ -4438,7 +4438,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 3,\\mathit{position}\\in 13,\\mathit{string}\\in\\text{\"daf\"},\\mathit{submatches}\\in\\emptyset)$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 3,\\mathit{position}\\in 13,\\mathit{string}\\in\\text{\"daf\"},\\mathit{submatches}\\in\\emptyset)$"
       ],
       "text/plain": [
        "rec(length∈3,position∈13,string∈\"daf\",submatches∈∅)"
@@ -4491,7 +4491,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in-1,\\mathit{position}\\in-1,\\mathit{string}\\in\\text{\"\"},\\mathit{submatches}\\in\\emptyset)$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in-1,\\mathit{position}\\in-1,\\mathit{string}\\in\\text{\"\"},\\mathit{submatches}\\in\\emptyset)$"
       ],
       "text/plain": [
        "rec(length∈−1,position∈−1,string∈\"\",submatches∈∅)"
@@ -4578,7 +4578,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\emptyset$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\emptyset$"
       ],
       "text/plain": [
        "∅"
@@ -4656,7 +4656,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 3,\\mathit{position}\\in 5,\\mathit{string}\\in\\text{\"äéà\"},\\mathit{submatches}\\in\\emptyset)$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\mathit{rec}(\\mathit{length}\\in 3,\\mathit{position}\\in 5,\\mathit{string}\\in\\text{\"äéà\"},\\mathit{submatches}\\in\\emptyset)$"
       ],
       "text/plain": [
        "rec(length∈3,position∈5,string∈\"äéà\",submatches∈∅)"
@@ -5043,15 +5043,15 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "CommandExecutionException",
-     "evalue": ":eval: UNKNOWN: \n### Exception occurred while calling external function:  'REGEX_SEARCH':regex_exception('One of *?+{ was not preceded by a valid regular expression.')\n ### File: /Users/Shared/Uni/SHK/ProB2/prob_prolog/stdlib/LibraryRegex.def\n ### Line: 34, Column: 1 until 88\n ### within: DEFINITION call of REGEX_SEARCH at Line: 1 Column: 0 until Line: 1 Column: 54\n\n",
+     "ename": "WithSourceCodeException",
+     "evalue": "de.prob.exception.ProBError: UNKNOWN\nProB returned error messages:\nError: Exception occurred while calling external function REGEX_SEARCH: regex_exception('One of *?+{ was not preceded by a valid regular expression.') (/Users/dgelessus/.prob/prob2-4.12.0/stdlib/LibraryRegex.def:45:1 to 45:88)",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[31m:eval: UNKNOWN: \u001b[0m",
-      "\u001b[1m\u001b[31m### Exception occurred while calling external function:  'REGEX_SEARCH':regex_exception('One of *?+{ was not preceded by a valid regular expression.')\u001b[0m",
-      "\u001b[1m\u001b[31m ### File: /Users/Shared/Uni/SHK/ProB2/prob_prolog/stdlib/LibraryRegex.def\u001b[0m",
-      "\u001b[1m\u001b[31m ### Line: 34, Column: 1 until 88\u001b[0m",
-      "\u001b[1m\u001b[31m ### within: DEFINITION call of REGEX_SEARCH at Line: 1 Column: 0 until Line: 1 Column: 54\u001b[0m"
+      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mUNKNOWN\u001b[0m",
+      "\u001b[1m\u001b[31mError: Exception occurred while calling external function REGEX_SEARCH: regex_exception('One of *?+{ was not preceded by a valid regular expression.') (/Users/dgelessus/.prob/prob2-4.12.0/stdlib/LibraryRegex.def:45:1 to 45:88)\u001b[0m",
+      "\u001b[1m\u001b[30m                              string:STRING, submatches:seq(STRING)));\u001b[0m",
+      "\u001b[1m\u001b[30m \u001b[0m\u001b[1m\u001b[30m\u001b[41mREGEX_SEARCH(re_str,re_from,re_pat) == rec(length:0,position:0,string:\"\",submatches:[])\u001b[0m\u001b[1m\u001b[30m;\u001b[0m",
+      "\u001b[1m\u001b[30m // a version which ignores case (icase option)\u001b[0m"
      ]
     }
    ],
@@ -5506,14 +5506,13 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "CommandExecutionException",
-     "evalue": ":eval: NOT-WELL-DEFINED: \narg not positive x > 0\n ### Line: 1, Column: 27 until 30\n ### within: DEFINITION call of ASSERT_EXPR at Line: 1 Column: 10 until Line: 1 Column: 56\n\n",
+     "ename": "WithSourceCodeException",
+     "evalue": "de.prob.exception.ProBError: NOT-WELL-DEFINED\nProB returned error messages:\nError: arg not positive x > 0 (:1:27 to 1:30)",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[31m:eval: NOT-WELL-DEFINED: \u001b[0m",
-      "\u001b[1m\u001b[31marg not positive x > 0\u001b[0m",
-      "\u001b[1m\u001b[31m ### Line: 1, Column: 27 until 30\u001b[0m",
-      "\u001b[1m\u001b[31m ### within: DEFINITION call of ASSERT_EXPR at Line: 1 Column: 10 until Line: 1 Column: 56\u001b[0m"
+      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mNOT-WELL-DEFINED\u001b[0m",
+      "\u001b[1m\u001b[31mError: arg not positive x > 0 (:1:27 to 1:30)\u001b[0m",
+      "\u001b[1m\u001b[30mx=0 & res=ASSERT_EXPR(bool(\u001b[0m\u001b[1m\u001b[30m\u001b[41mx>0\u001b[0m\u001b[1m\u001b[30m),\"arg not positive\",10+x)\u001b[0m"
      ]
     }
    ],
@@ -5609,13 +5608,13 @@
     {
      "data": {
       "text/plain": [
-       "ProB 2 Jupyter kernel: 1.2.1-SNAPSHOT (2aaa99bab781d6eca5a2b3388cca76b412fd52f6)\n",
-       "ProB 2: 3.15.0 (6ee6df4eab62d20df40c36cd42108b62962ec41b)\n",
-       "ProB B parser: 2.9.32 (7306d13499ba281a6e336c006d9fb23204624daa)\n",
+       "ProB 2 Jupyter kernel: 1.3.1-SNAPSHOT (b960640e155fc1441104e499894acd14e8f0fc07)\n",
+       "ProB 2: 4.12.0 (0356aaca15fde27915b8ab15c35a198fd381c9cd)\n",
+       "ProB B parser: 2.12.3 (99a64151f3bc82f987258619161831a8b9a7df01)\n",
        "ProB CLI:\n",
-       "\t1.11.1-final (1125ea39af78125a39093c65a0af783b7636b362)\n",
-       "\tLast changed: Wed Dec 29 13:14:39 2021 +0100\n",
-       "\tProlog: SICStus 4.7.0 (x86_64-darwin-18.7.0): Wed Jul  7 17:07:32 CEST 2021"
+       "\t1.12.0-final (fef4b935b59d76e353ab67230f6206b15f903f4b)\n",
+       "\tLast changed: Wed Apr 5 14:57:01 2023 +0200\n",
+       "\tProlog: SICStus 4.7.1 (x86_64-darwin-18.7.0): Fri Jan 21 19:45:28 CET 2022"
       ]
      },
      "execution_count": 194,
diff --git a/notebooks/manual/FloatsReals.ipynb b/notebooks/manual/FloatsReals.ipynb
index c781695306c3b4d5c50c30ee96133eed7f927770..2b7c9165a9c72e9327bbabe796ee003130e0e9e8 100644
--- a/notebooks/manual/FloatsReals.ipynb
+++ b/notebooks/manual/FloatsReals.ipynb
@@ -30,7 +30,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 1,
    "id": "cf76baf3",
    "metadata": {
     "vscode": {
@@ -47,7 +47,7 @@
        "2.0"
       ]
      },
-     "execution_count": 12,
+     "execution_count": 1,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -58,7 +58,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 2,
    "id": "941433ba",
    "metadata": {
     "vscode": {
@@ -75,7 +75,7 @@
        "TRUE"
       ]
      },
-     "execution_count": 6,
+     "execution_count": 2,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -98,7 +98,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": 3,
    "id": "8925f6fe",
    "metadata": {
     "vscode": {
@@ -115,7 +115,7 @@
        "2.0"
       ]
      },
-     "execution_count": 22,
+     "execution_count": 3,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -126,7 +126,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 23,
+   "execution_count": 4,
    "id": "bbd73954",
    "metadata": {
     "vscode": {
@@ -143,7 +143,7 @@
        "2"
       ]
      },
-     "execution_count": 23,
+     "execution_count": 4,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -154,7 +154,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": 5,
    "id": "838ea786",
    "metadata": {
     "vscode": {
@@ -171,7 +171,7 @@
        "3"
       ]
      },
-     "execution_count": 24,
+     "execution_count": 5,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -182,7 +182,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 25,
+   "execution_count": 6,
    "id": "ee31f934",
    "metadata": {
     "vscode": {
@@ -199,7 +199,7 @@
        "−2"
       ]
      },
-     "execution_count": 25,
+     "execution_count": 6,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -223,7 +223,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": 7,
    "id": "65a66ec9",
    "metadata": {
     "vscode": {
@@ -240,7 +240,7 @@
        "2.0"
       ]
      },
-     "execution_count": 1,
+     "execution_count": 7,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -251,7 +251,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": 8,
    "id": "35ce95d5",
    "metadata": {
     "vscode": {
@@ -268,7 +268,7 @@
        "FALSE"
       ]
      },
-     "execution_count": 2,
+     "execution_count": 8,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -279,7 +279,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": 9,
    "id": "531aa72d",
    "metadata": {
     "vscode": {
@@ -296,7 +296,7 @@
        "FALSE"
       ]
      },
-     "execution_count": 3,
+     "execution_count": 9,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -320,7 +320,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 10,
    "id": "528e647d",
    "metadata": {
     "vscode": {
@@ -345,7 +345,7 @@
        "\ty = 0"
       ]
      },
-     "execution_count": 4,
+     "execution_count": 10,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -369,7 +369,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": 11,
    "id": "9356ea2c",
    "metadata": {
     "vscode": {
@@ -392,7 +392,7 @@
        "\tx = 0.0"
       ]
      },
-     "execution_count": 7,
+     "execution_count": 11,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -403,7 +403,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 12,
    "id": "b6d8671d",
    "metadata": {
     "vscode": {
@@ -426,7 +426,7 @@
        "\tx = 1.0"
       ]
      },
-     "execution_count": 14,
+     "execution_count": 12,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -451,7 +451,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": 13,
    "id": "df6d2cd0",
    "metadata": {
     "vscode": {
@@ -468,7 +468,7 @@
        "1.4142135623730951"
       ]
      },
-     "execution_count": 9,
+     "execution_count": 13,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -479,7 +479,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 16,
+   "execution_count": 14,
    "id": "d2daab50",
    "metadata": {
     "vscode": {
@@ -496,7 +496,7 @@
        "−2.4492935982947064E-16"
       ]
      },
-     "execution_count": 16,
+     "execution_count": 14,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -507,7 +507,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": 15,
    "id": "481e4f68",
    "metadata": {
     "vscode": {
@@ -532,7 +532,7 @@
        "\tx = 0.5"
       ]
      },
-     "execution_count": 11,
+     "execution_count": 15,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -543,7 +543,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": 16,
    "id": "bfd74a24",
    "metadata": {
     "vscode": {
@@ -568,7 +568,7 @@
        "\tx = 10.5"
       ]
      },
-     "execution_count": 12,
+     "execution_count": 16,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -579,7 +579,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 13,
+   "execution_count": 17,
    "id": "34ca2773",
    "metadata": {
     "vscode": {
@@ -596,7 +596,7 @@
        "2.718281828459045"
       ]
      },
-     "execution_count": 13,
+     "execution_count": 17,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -607,7 +607,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 14,
+   "execution_count": 18,
    "id": "4b24407f",
    "metadata": {
     "vscode": {
@@ -624,7 +624,7 @@
        "−1.0"
       ]
      },
-     "execution_count": 14,
+     "execution_count": 18,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -635,7 +635,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": 19,
    "id": "ec855071",
    "metadata": {
     "vscode": {
@@ -652,7 +652,7 @@
        "2.2"
       ]
      },
-     "execution_count": 21,
+     "execution_count": 19,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -663,7 +663,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 17,
+   "execution_count": 20,
    "id": "c0bf9060",
    "metadata": {
     "vscode": {
@@ -680,7 +680,7 @@
        "10.0"
       ]
      },
-     "execution_count": 17,
+     "execution_count": 20,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -691,7 +691,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 18,
+   "execution_count": 21,
    "id": "152d2052",
    "metadata": {
     "vscode": {
@@ -708,7 +708,7 @@
        "1.0"
       ]
      },
-     "execution_count": 18,
+     "execution_count": 21,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -719,7 +719,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 19,
+   "execution_count": 22,
    "id": "0a81f12f",
    "metadata": {
     "vscode": {
@@ -736,7 +736,7 @@
        "1.4142135623730951"
       ]
      },
-     "execution_count": 19,
+     "execution_count": 22,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -747,7 +747,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 20,
+   "execution_count": 23,
    "id": "4669fcd2",
    "metadata": {
     "vscode": {
@@ -764,7 +764,7 @@
        "1.0"
       ]
      },
-     "execution_count": 20,
+     "execution_count": 23,
      "metadata": {},
      "output_type": "execute_result"
     }
diff --git a/notebooks/models/Jars_DieHard_Puzzle.ipynb b/notebooks/models/Jars_DieHard_Puzzle.ipynb
index f2386e6b6734c4ab958ea54f29c166ebcf28648b..3d01b202b00125b5df1c1eb967607f10f33a0e68 100644
--- a/notebooks/models/Jars_DieHard_Puzzle.ipynb
+++ b/notebooks/models/Jars_DieHard_Puzzle.ipynb
@@ -654,14 +654,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: g Pages: 1 -->\n",
-       "<svg width=\"303pt\" height=\"110pt\"\n",
-       " viewBox=\"0.00 0.00 303.00 110.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
+       "<svg width=\"291pt\" height=\"110pt\"\n",
+       " viewBox=\"0.00 0.00 291.00 110.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 106)\">\n",
        "<title>g</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-106 299,-106 299,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-106 287,-106 287,4 -4,4\"/>\n",
        "<!-- Noderoot -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>Noderoot</title>\n",
@@ -678,36 +678,36 @@
        "<!-- Node1&#45;&gt;Noderoot -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>Node1&#45;&gt;Noderoot</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M89.6,-74.5C81.43,-71.72 72.3,-68.6 63.62,-65.64\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"64.68,-62.31 54.08,-62.39 62.42,-68.93 64.68,-62.31\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M90.07,-74.66C82.07,-71.93 73.1,-68.88 64.53,-65.95\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"65.95,-62.4 55.35,-62.48 63.69,-69.02 65.95,-62.4\"/>\n",
        "</g>\n",
        "<!-- Node2 -->\n",
        "<g id=\"node3\" class=\"node\">\n",
        "<title>Node2</title>\n",
        "<polygon fill=\"white\" stroke=\"black\" points=\"90,-0.5 90,-46.5 144,-46.5 144,-0.5 90,-0.5\"/>\n",
        "<text text-anchor=\"middle\" x=\"117\" y=\"-31.3\" font-family=\"Times,serif\" font-size=\"14.00\">ran</text>\n",
-       "<polyline fill=\"none\" stroke=\"black\" points=\"90,-23.5 144,-23.5 \"/>\n",
+       "<polyline fill=\"none\" stroke=\"black\" points=\"90,-23.5 144,-23.5\"/>\n",
        "<text text-anchor=\"middle\" x=\"117\" y=\"-8.3\" font-family=\"Times,serif\" font-size=\"14.00\">{3,4}</text>\n",
        "</g>\n",
        "<!-- Node2&#45;&gt;Noderoot -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>Node2&#45;&gt;Noderoot</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M89.6,-32.5C81.43,-35.28 72.3,-38.4 63.62,-41.36\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"62.42,-38.07 54.08,-44.61 64.68,-44.69 62.42,-38.07\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M90.07,-32.34C82.07,-35.07 73.1,-38.12 64.53,-41.05\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"63.69,-37.98 55.35,-44.52 65.95,-44.6 63.69,-37.98\"/>\n",
        "</g>\n",
        "<!-- Node3 -->\n",
        "<g id=\"node4\" class=\"node\">\n",
        "<title>Node3</title>\n",
-       "<polygon fill=\"white\" stroke=\"black\" points=\"180,-0.5 180,-46.5 295,-46.5 295,-0.5 180,-0.5\"/>\n",
-       "<text text-anchor=\"middle\" x=\"237.5\" y=\"-31.3\" font-family=\"Times,serif\" font-size=\"14.00\">level</text>\n",
-       "<polyline fill=\"none\" stroke=\"black\" points=\"180,-23.5 295,-23.5 \"/>\n",
-       "<text text-anchor=\"middle\" x=\"237.5\" y=\"-8.3\" font-family=\"Times,serif\" font-size=\"14.00\">{(j3↦3),(j5↦4)}</text>\n",
+       "<polygon fill=\"white\" stroke=\"black\" points=\"180,-0.5 180,-46.5 283,-46.5 283,-0.5 180,-0.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"231.5\" y=\"-31.3\" font-family=\"Times,serif\" font-size=\"14.00\">level</text>\n",
+       "<polyline fill=\"none\" stroke=\"black\" points=\"180,-23.5 283,-23.5\"/>\n",
+       "<text text-anchor=\"middle\" x=\"231.5\" y=\"-8.3\" font-family=\"Times,serif\" font-size=\"14.00\">{(j3↦3),(j5↦4)}</text>\n",
        "</g>\n",
        "<!-- Node3&#45;&gt;Node2 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>Node3&#45;&gt;Node2</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M179.68,-23.5C171.01,-23.5 162.26,-23.5 154.2,-23.5\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"154.04,-20 144.04,-23.5 154.04,-27 154.04,-20\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M180.17,-23.5C171.66,-23.5 162.97,-23.5 154.89,-23.5\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"154.94,-20 144.94,-23.5 154.94,-27 154.94,-20\"/>\n",
        "</g>\n",
        "</g>\n",
        "</svg>\n"
diff --git a/notebooks/models/NFA_to_DFA.ipynb b/notebooks/models/NFA_to_DFA.ipynb
index f57b2a025c6d6f008d6d5f04ef3fe954a742bf93..a2fae6b34f13642bd2cd12f040686e045749a29e 100644
--- a/notebooks/models/NFA_to_DFA.ipynb
+++ b/notebooks/models/NFA_to_DFA.ipynb
@@ -8,7 +8,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\newcommand{\\Inter}{\\bigcap\\nolimits}\\newcommand{\\bfalse}{\\mathord\\bot}\\newcommand{\\qdot}{\\mathord{\\mkern1mu\\cdot\\mkern1mu}}\\newcommand{\\binter}{\\mathbin{\\mkern1mu\\cap\\mkern1mu}}\\newcommand{\\dprod}{\\mathbin\\otimes}\\newcommand{\\usucc}{\\mathop{\\mathrm{succ}}\\nolimits}\\newcommand{\\trel}{\\mathbin{<\\mkern-6mu<\\mkern-10mu-\\mkern-10mu>}}\\newcommand{\\strel}{\\mathbin{<\\mkern-6mu<\\mkern-10mu-\\mkern-10mu>\\mkern-6mu>}}\\newcommand{\\Bool}{\\mathord{\\mathrm{BOOL}}}\\newcommand{\\rel}{\\mathbin{<\\mkern-10mu-\\mkern-10mu>}}\\newcommand{\\pprod}{\\mathbin\\mid}\\newcommand{\\id}{\\mathop{\\mathrm{id}}\\nolimits}\\newcommand{\\cprod}{\\mathbin\\times}\\newcommand{\\ran}{\\mathop{\\mathrm{ran}}\\nolimits}\\newcommand{\\nat}{\\mathord{\\mathbb N}}\\newcommand{\\pown}{\\mathop{\\mathbb P_1}\\nolimits}\\newcommand{\\finite}{\\mathop{\\mathrm{finite}}\\nolimits}\\newcommand{\\inter}{\\mathop{\\mathrm{inter}}\\nolimits}\\newcommand{\\prjone}{\\mathop{\\mathrm{prj}_1}\\nolimits}\\newcommand{\\defi}{\\mathrel{≙}}\\newcommand{\\ranres}{\\mathbin▷}\\newcommand{\\prjtwo}{\\mathop{\\mathrm{prj}_2}\\nolimits}\\newcommand{\\upred}{\\mathop{\\mathrm{pred}}\\nolimits}\\newcommand{\\fcomp}{\\mathbin;}\\newcommand{\\tbij}{\\mathbin⤖}\\newcommand{\\pfun}{\\mathbin↦}\\newcommand{\\tfun}{\\mathbin→}\\newcommand{\\card}{\\mathop{\\mathrm{card}}\\nolimits}\\newcommand{\\pinj}{\\mathbin⤔}\\newcommand{\\dom}{\\mathop{\\mathrm{dom}}\\nolimits}\\newcommand{\\bool}{\\mathop{\\mathrm{bool}}\\nolimits}\\newcommand{\\tinj}{\\mathbin↣}\\newcommand{\\domsub}{\\mathbin⩤}\\newcommand{\\Union}{\\bigcup\\nolimits}\\newcommand{\\limp}{\\mathbin\\Rightarrow}\\newcommand{\\ransub}{\\mathbin⩥}\\newcommand{\\psur}{\\mathbin⤅}\\newcommand{\\pow}{\\mathop{\\mathbb P\\hbox{}}\\nolimits}\\newcommand{\\bcmsuch}{\\mathrel{:\\mkern1mu\\mid}}\\newcommand{\\natn}{\\mathord{\\mathbb N_1}}\\newcommand{\\expn}{\\mathbin{\\widehat{\\mkern1em}}}\\newcommand{\\upto}{\\mathbin{.\\mkern1mu.}}\\newcommand{\\bcomp}{\\circ}\\newcommand{\\bcmin}{\\mathrel{:\\mkern1mu\\in}}\\newcommand{\\ovl}{\\mathbin{<\\mkern-11mu+}}\\newcommand{\\intg}{\\mathord{\\mathbb Z}}\\newcommand{\\domres}{\\mathbin◁}\\newcommand{\\tsur}{\\mathbin↠}\\newcommand{\\btrue}{\\mathord\\top}\\newcommand{\\union}{\\mathop{\\mathrm{union}}\\nolimits}\\newcommand{\\bcmeq}{\\mathrel{:\\mkern1mu=}}\\newcommand{\\leqv}{\\mathbin\\Leftrightarrow}\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\newcommand{\\bunion}{\\mathbin{\\mkern1mu\\cup\\mkern1mu}}\\newcommand{\\srel}{\\mathbin{<\\mkern-10mu-\\mkern-10mu>\\mkern-6mu>}}\\text{All bsymb.sty definitions have been loaded.}$"
+       "$\\def\\Inter{\\bigcap\\nolimits}\\def\\bfalse{\\mathord\\bot}\\def\\qdot{\\mathord{\\mkern1mu\\cdot\\mkern1mu}}\\def\\binter{\\mathbin{\\mkern1mu\\cap\\mkern1mu}}\\def\\dprod{\\mathbin\\otimes}\\def\\usucc{\\mathop{\\mathrm{succ}}\\nolimits}\\def\\trel{\\mathbin{<\\mkern-6mu<\\mkern-10mu-\\mkern-10mu>}}\\def\\strel{\\mathbin{<\\mkern-6mu<\\mkern-10mu-\\mkern-10mu>\\mkern-6mu>}}\\def\\Bool{\\mathord{\\mathrm{BOOL}}}\\def\\rel{\\mathbin{<\\mkern-10mu-\\mkern-10mu>}}\\def\\pprod{\\mathbin\\mid}\\def\\id{\\mathop{\\mathrm{id}}\\nolimits}\\def\\cprod{\\mathbin\\times}\\def\\ran{\\mathop{\\mathrm{ran}}\\nolimits}\\def\\nat{\\mathord{\\mathbb N}}\\def\\pown{\\mathop{\\mathbb P_1}\\nolimits}\\def\\finite{\\mathop{\\mathrm{finite}}\\nolimits}\\def\\inter{\\mathop{\\mathrm{inter}}\\nolimits}\\def\\prjone{\\mathop{\\mathrm{prj}_1}\\nolimits}\\def\\defi{\\mathrel{≙}}\\def\\ranres{\\mathbin▷}\\def\\prjtwo{\\mathop{\\mathrm{prj}_2}\\nolimits}\\def\\upred{\\mathop{\\mathrm{pred}}\\nolimits}\\def\\fcomp{\\mathbin;}\\def\\tbij{\\mathbin⤖}\\def\\pfun{\\mathbin↦}\\def\\tfun{\\mathbin→}\\def\\card{\\mathop{\\mathrm{card}}\\nolimits}\\def\\pinj{\\mathbin⤔}\\def\\dom{\\mathop{\\mathrm{dom}}\\nolimits}\\def\\bool{\\mathop{\\mathrm{bool}}\\nolimits}\\def\\tinj{\\mathbin↣}\\def\\domsub{\\mathbin⩤}\\def\\Union{\\bigcup\\nolimits}\\def\\limp{\\mathbin\\Rightarrow}\\def\\ransub{\\mathbin⩥}\\def\\psur{\\mathbin⤅}\\def\\pow{\\mathop{\\mathbb P\\hbox{}}\\nolimits}\\def\\bcmsuch{\\mathrel{:\\mkern1mu\\mid}}\\def\\natn{\\mathord{\\mathbb N_1}}\\def\\expn{\\mathbin{\\widehat{\\mkern1em}}}\\def\\upto{\\mathbin{.\\mkern1mu.}}\\def\\bcomp{\\circ}\\def\\bcmin{\\mathrel{:\\mkern1mu\\in}}\\def\\ovl{\\mathbin{<\\mkern-11mu+}}\\def\\intg{\\mathord{\\mathbb Z}}\\def\\domres{\\mathbin◁}\\def\\tsur{\\mathbin↠}\\def\\btrue{\\mathord\\top}\\def\\union{\\mathop{\\mathrm{union}}\\nolimits}\\def\\bcmeq{\\mathrel{:\\mkern1mu=}}\\def\\leqv{\\mathbin\\Leftrightarrow}\\def\\emptyset{\\mathord\\varnothing}\\def\\bunion{\\mathbin{\\mkern1mu\\cup\\mkern1mu}}\\def\\srel{\\mathbin{<\\mkern-10mu-\\mkern-10mu>\\mkern-6mu>}}\\text{All bsymb.sty definitions have been loaded.}$"
       ],
       "text/plain": [
        "Your current environment uses plain text output; the bsymb.sty LaTeX commands will not be loaded."
@@ -252,14 +252,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: state Pages: 1 -->\n",
        "<svg width=\"144pt\" height=\"358pt\"\n",
        " viewBox=\"0.00 0.00 144.00 358.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 354)\">\n",
        "<title>state</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-354 140,-354 140,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-354 140,-354 140,4 -4,4\"/>\n",
        "<g id=\"clust1\" class=\"cluster\">\n",
        "<title>cluster_Z</title>\n",
        "<polygon fill=\"lightgrey\" stroke=\"lightgrey\" points=\"8,-8 8,-342 128,-342 128,-8 8,-8\"/>\n",
@@ -274,15 +274,15 @@
        "<!-- z0&#45;&gt;z0 -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>z0&#45;&gt;z0</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M70.24,-298.93C80.02,-299.02 88,-297.71 88,-295 88,-293.35 85.04,-292.22 80.51,-291.61\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.41,-288.1 70.24,-291.07 80.04,-295.09 80.41,-288.1\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M70.24,-299.07C80.02,-299.16 88,-297.8 88,-295 88,-293.38 85.33,-292.24 81.19,-291.59\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"81.43,-288.03 71.24,-290.93 81.01,-295.02 81.43,-288.03\"/>\n",
        "<text text-anchor=\"middle\" x=\"91.5\" y=\"-291.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- z0&#45;&gt;z0 -->\n",
        "<g id=\"edge6\" class=\"edge\">\n",
        "<title>z0&#45;&gt;z0</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M70.2,-302.18C88.34,-304.2 106,-301.81 106,-295 106,-289.47 94.34,-286.85 80.24,-287.15\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"79.94,-283.66 70.2,-287.82 80.41,-290.64 79.94,-283.66\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M70.2,-302.44C88.34,-304.53 106,-302.05 106,-295 106,-289.38 94.79,-286.66 81.05,-286.85\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"80.95,-283.42 71.2,-287.56 81.4,-290.4 80.95,-283.42\"/>\n",
        "<text text-anchor=\"middle\" x=\"109.5\" y=\"-291.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- z1 -->\n",
@@ -294,8 +294,8 @@
        "<!-- z0&#45;&gt;z1 -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>z0&#45;&gt;z1</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M43,-276.8C43,-265.16 43,-249.55 43,-236.24\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"46.5,-236.18 43,-226.18 39.5,-236.18 46.5,-236.18\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M43,-276.8C43,-265.47 43,-250.36 43,-237.29\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"46.5,-237.47 43,-227.47 39.5,-237.47 46.5,-237.47\"/>\n",
        "<text text-anchor=\"middle\" x=\"46.5\" y=\"-247.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- z2 -->\n",
@@ -307,8 +307,8 @@
        "<!-- z1&#45;&gt;z2 -->\n",
        "<g id=\"edge5\" class=\"edge\">\n",
        "<title>z1&#45;&gt;z2</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M43,-189.8C43,-178.16 43,-162.55 43,-149.24\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"46.5,-149.18 43,-139.18 39.5,-149.18 46.5,-149.18\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M43,-189.8C43,-178.47 43,-163.36 43,-150.29\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"46.5,-150.47 43,-140.47 39.5,-150.47 46.5,-150.47\"/>\n",
        "<text text-anchor=\"middle\" x=\"46.5\" y=\"-160.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- z3 -->\n",
@@ -320,15 +320,15 @@
        "<!-- z3&#45;&gt;z3 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>z3&#45;&gt;z3</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M70.24,-41.87C80.02,-42.04 88,-39.41 88,-34 88,-30.7 85.04,-28.44 80.51,-27.21\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"80.55,-23.7 70.24,-26.13 79.82,-30.66 80.55,-23.7\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M70.24,-42.15C80.02,-42.32 88,-39.61 88,-34 88,-30.67 85.19,-28.36 80.86,-27.07\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"81.57,-23.51 71.24,-25.85 80.78,-30.47 81.57,-23.51\"/>\n",
        "<text text-anchor=\"middle\" x=\"91.5\" y=\"-30.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- z2&#45;&gt;z3 -->\n",
        "<g id=\"edge4\" class=\"edge\">\n",
        "<title>z2&#45;&gt;z3</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M43,-102.8C43,-91.16 43,-75.55 43,-62.24\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"46.5,-62.18 43,-52.18 39.5,-62.18 46.5,-62.18\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M43,-102.8C43,-91.47 43,-76.36 43,-63.29\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"46.5,-63.47 43,-53.47 39.5,-63.47 46.5,-63.47\"/>\n",
        "<text text-anchor=\"middle\" x=\"46.5\" y=\"-73.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "</g>\n",
@@ -527,7 +527,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}\\{\\emptyset,\\{\\mathit{z0}\\},\\{\\mathit{z0},\\mathit{z1}\\},\\{\\mathit{z0},\\mathit{z2}\\},\\{\\mathit{z0},\\mathit{z3}\\},\\{\\mathit{z1}\\},\\{\\mathit{z0},\\mathit{z1},\\mathit{z2}\\},\\{\\mathit{z0},\\mathit{z1},\\mathit{z3}\\},\\{\\mathit{z1},\\mathit{z2}\\},\\{\\mathit{z1},\\mathit{z3}\\},\\{\\mathit{z0},\\mathit{z1},\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z2}\\},\\{\\mathit{z0},\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z1},\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z3}\\}\\}$"
+       "$\\def\\emptyset{\\mathord\\varnothing}\\{\\emptyset,\\{\\mathit{z0}\\},\\{\\mathit{z0},\\mathit{z1}\\},\\{\\mathit{z0},\\mathit{z2}\\},\\{\\mathit{z0},\\mathit{z3}\\},\\{\\mathit{z1}\\},\\{\\mathit{z0},\\mathit{z1},\\mathit{z2}\\},\\{\\mathit{z0},\\mathit{z1},\\mathit{z3}\\},\\{\\mathit{z1},\\mathit{z2}\\},\\{\\mathit{z1},\\mathit{z3}\\},\\{\\mathit{z0},\\mathit{z1},\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z2}\\},\\{\\mathit{z0},\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z1},\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z2},\\mathit{z3}\\},\\{\\mathit{z3}\\}\\}$"
       ],
       "text/plain": [
        "{∅,{z0},{z0,z1},{z0,z2},{z0,z3},{z1},{z0,z1,z2},{z0,z1,z3},{z1,z2},{z1,z3},{z0,z1,z2,z3},{z2},{z0,z2,z3},{z1,z2,z3},{z2,z3},{z3}}"
@@ -675,14 +675,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: state Pages: 1 -->\n",
        "<svg width=\"654pt\" height=\"566pt\"\n",
        " viewBox=\"0.00 0.00 654.00 566.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 562)\">\n",
        "<title>state</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-562 650,-562 650,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-562 650,-562 650,4 -4,4\"/>\n",
        "<!-- \\{z2,z3\\} -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>\\{z2,z3\\}</title>\n",
@@ -692,8 +692,8 @@
        "<!-- \\{z2,z3\\}&#45;&gt;\\{z2,z3\\} -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>\\{z2,z3\\}&#45;&gt;\\{z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M223.69,-460.88C233.58,-460.88 241.5,-458.25 241.5,-453 241.5,-449.72 238.41,-447.46 233.67,-446.23\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"234.01,-442.75 223.69,-445.12 233.24,-449.71 234.01,-442.75\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M223.69,-461.16C233.58,-461.16 241.5,-458.44 241.5,-453 241.5,-449.77 238.71,-447.5 234.37,-446.19\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"235.05,-442.62 224.69,-444.84 234.17,-449.57 235.05,-442.62\"/>\n",
        "<text text-anchor=\"middle\" x=\"251.5\" y=\"-449.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z3\\} -->\n",
@@ -705,15 +705,15 @@
        "<!-- \\{z2,z3\\}&#45;&gt;\\{z3\\} -->\n",
        "<g id=\"edge11\" class=\"edge\">\n",
        "<title>\\{z2,z3\\}&#45;&gt;\\{z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M174.14,-434.79C169.36,-429.57 164.82,-423.49 162,-417 158.98,-410.05 157.55,-402.05 156.98,-394.52\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"160.47,-394.22 156.67,-384.33 153.47,-394.44 160.47,-394.22\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M174.14,-434.79C169.36,-429.57 164.82,-423.49 162,-417 159.08,-410.29 157.65,-402.6 157.04,-395.3\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"160.5,-395.21 156.67,-385.33 153.51,-395.45 160.5,-395.21\"/>\n",
        "<text text-anchor=\"middle\" x=\"165.5\" y=\"-405.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z2,z3\\}&#45;&gt;\\{z3\\} -->\n",
        "<g id=\"edge27\" class=\"edge\">\n",
        "<title>\\{z2,z3\\}&#45;&gt;\\{z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M186.71,-434.8C181.69,-422.93 174.91,-406.93 169.2,-393.45\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"172.4,-392.02 165.27,-384.18 165.95,-394.75 172.4,-392.02\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M186.71,-434.8C181.82,-423.24 175.26,-407.75 169.65,-394.5\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"172.52,-393.31 165.4,-385.47 166.07,-396.04 172.52,-393.31\"/>\n",
        "<text text-anchor=\"middle\" x=\"182.5\" y=\"-405.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z1,z2,z3\\} -->\n",
@@ -725,22 +725,22 @@
        "<!-- \\{z1,z2,z3\\}&#45;&gt;\\{z2,z3\\} -->\n",
        "<g id=\"edge12\" class=\"edge\">\n",
        "<title>\\{z1,z2,z3\\}&#45;&gt;\\{z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M110.93,-521.63C112.3,-511.19 115.52,-498.18 123,-489 131.29,-478.83 143.27,-471.37 155.04,-466.03\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"156.45,-469.23 164.35,-462.18 153.77,-462.76 156.45,-469.23\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M110.93,-521.63C112.3,-511.19 115.52,-498.18 123,-489 131.12,-479.03 142.8,-471.67 154.34,-466.35\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"155.47,-469.25 163.35,-462.18 152.78,-462.79 155.47,-469.25\"/>\n",
        "<text text-anchor=\"middle\" x=\"126.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z1,z2,z3\\}&#45;&gt;\\{z2,z3\\} -->\n",
        "<g id=\"edge28\" class=\"edge\">\n",
        "<title>\\{z1,z2,z3\\}&#45;&gt;\\{z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M127,-521.8C139.3,-509.36 156.09,-492.36 169.78,-478.5\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"172.49,-480.75 177.03,-471.18 167.51,-475.83 172.49,-480.75\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M127,-521.8C139.1,-509.55 155.56,-492.9 169.13,-479.16\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"171.2,-482.04 175.74,-472.47 166.22,-477.12 171.2,-482.04\"/>\n",
        "<text text-anchor=\"middle\" x=\"161.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z1,z2,z3\\}&#45;&gt;\\{z1,z2,z3\\} -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>\\{z1,z2,z3\\}&#45;&gt;\\{z1,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M148.21,-547.81C158.33,-547.36 166,-544.76 166,-540 166,-537.03 163.01,-534.89 158.29,-533.61\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"158.6,-530.12 148.21,-532.19 157.63,-537.05 158.6,-530.12\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M148.48,-548.07C158.47,-547.58 166,-544.89 166,-540 166,-537.1 163.34,-534.97 159.09,-533.62\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"159.9,-530.04 149.48,-531.93 158.8,-536.96 159.9,-530.04\"/>\n",
        "<text text-anchor=\"middle\" x=\"176\" y=\"-536.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z0,z2,z3\\} -->\n",
@@ -752,8 +752,8 @@
        "<!-- \\{z0,z2,z3\\}&#45;&gt;\\{z0,z2,z3\\} -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>\\{z0,z2,z3\\}&#45;&gt;\\{z0,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M347.21,-286.81C357.33,-286.36 365,-283.76 365,-279 365,-276.03 362.01,-273.89 357.29,-272.61\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"357.6,-269.12 347.21,-271.19 356.63,-276.05 357.6,-269.12\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M347.48,-287.07C357.47,-286.58 365,-283.89 365,-279 365,-276.1 362.34,-273.97 358.09,-272.62\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"358.9,-269.04 348.48,-270.93 357.8,-275.96 358.9,-269.04\"/>\n",
        "<text text-anchor=\"middle\" x=\"375\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z3\\} -->\n",
@@ -765,8 +765,8 @@
        "<!-- \\{z0,z2,z3\\}&#45;&gt;\\{z0,z1,z3\\} -->\n",
        "<g id=\"edge13\" class=\"edge\">\n",
        "<title>\\{z0,z2,z3\\}&#45;&gt;\\{z0,z1,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M309.9,-260.79C311.31,-239.93 314.78,-203.86 323,-174 326.9,-159.84 333.1,-144.76 338.77,-132.4\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"342.04,-133.68 343.16,-123.15 335.71,-130.69 342.04,-133.68\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M309.9,-260.79C311.31,-239.93 314.78,-203.86 323,-174 326.83,-160.08 332.89,-145.26 338.49,-133.02\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"341.92,-134.96 343.02,-124.43 335.59,-131.97 341.92,-134.96\"/>\n",
        "<text text-anchor=\"middle\" x=\"326.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z0,z3\\} -->\n",
@@ -778,8 +778,8 @@
        "<!-- \\{z0,z2,z3\\}&#45;&gt;\\{z0,z3\\} -->\n",
        "<g id=\"edge29\" class=\"edge\">\n",
        "<title>\\{z0,z2,z3\\}&#45;&gt;\\{z0,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M337.94,-260.8C359.94,-247.72 390.39,-229.62 414.29,-215.41\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"416.3,-218.29 423.1,-210.18 412.72,-212.28 416.3,-218.29\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M338.28,-260.59C359.97,-247.7 389.74,-230.01 413.37,-215.96\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"414.95,-218.5 421.76,-210.38 411.37,-212.48 414.95,-218.5\"/>\n",
        "<text text-anchor=\"middle\" x=\"392.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z2\\} -->\n",
@@ -791,22 +791,22 @@
        "<!-- \\{z2\\}&#45;&gt;\\{z2\\} -->\n",
        "<g id=\"edge4\" class=\"edge\">\n",
        "<title>\\{z2\\}&#45;&gt;\\{z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M91.24,-460.87C101.02,-461.04 109,-458.41 109,-453 109,-449.7 106.04,-447.44 101.51,-446.21\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"101.55,-442.7 91.24,-445.13 100.82,-449.66 101.55,-442.7\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M91.24,-461.15C101.02,-461.32 109,-458.61 109,-453 109,-449.67 106.19,-447.36 101.86,-446.07\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"102.57,-442.51 92.24,-444.85 101.78,-449.47 102.57,-442.51\"/>\n",
        "<text text-anchor=\"middle\" x=\"119\" y=\"-449.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z2\\}&#45;&gt;\\{z3\\} -->\n",
        "<g id=\"edge14\" class=\"edge\">\n",
        "<title>\\{z2\\}&#45;&gt;\\{z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M69.95,-434.59C74.22,-424.12 80.85,-411.11 90,-402 98.89,-393.14 110.49,-386.06 121.58,-380.64\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"123.06,-383.81 130.71,-376.48 120.16,-377.44 123.06,-383.81\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M69.95,-434.59C74.22,-424.12 80.85,-411.11 90,-402 98.72,-393.32 110.03,-386.34 120.92,-380.96\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"122.08,-383.82 129.71,-376.48 119.16,-377.46 122.08,-383.82\"/>\n",
        "<text text-anchor=\"middle\" x=\"93.5\" y=\"-405.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z2\\}&#45;&gt;\\{z3\\} -->\n",
        "<g id=\"edge30\" class=\"edge\">\n",
        "<title>\\{z2\\}&#45;&gt;\\{z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M83.02,-434.8C96.91,-422.24 115.92,-405.05 131.33,-391.12\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"133.94,-393.48 139.01,-384.18 129.24,-388.29 133.94,-393.48\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M83.02,-434.8C96.69,-422.44 115.33,-405.59 130.6,-391.78\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"132.61,-394.77 137.68,-385.47 127.92,-389.58 132.61,-394.77\"/>\n",
        "<text text-anchor=\"middle\" x=\"120.5\" y=\"-405.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z2,z3\\} -->\n",
@@ -818,22 +818,22 @@
        "<!-- \\{z0,z1,z2,z3\\}&#45;&gt;\\{z0,z2,z3\\} -->\n",
        "<g id=\"edge31\" class=\"edge\">\n",
        "<title>\\{z0,z1,z2,z3\\}&#45;&gt;\\{z0,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M266.08,-36.32C273.9,-80.38 294.62,-197.01 304.11,-250.49\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"300.72,-251.37 305.91,-260.6 307.61,-250.15 300.72,-251.37\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M266.08,-36.32C273.87,-80.19 294.44,-196.03 304,-249.82\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"300.72,-250.37 305.91,-259.6 307.61,-249.15 300.72,-250.37\"/>\n",
        "<text text-anchor=\"middle\" x=\"291.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z2,z3\\}&#45;&gt;\\{z0,z1,z2,z3\\} -->\n",
        "<g id=\"edge5\" class=\"edge\">\n",
        "<title>\\{z0,z1,z2,z3\\}&#45;&gt;\\{z0,z1,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M309.02,-21.84C319.41,-21.5 327,-20.21 327,-18 327,-16.62 324.03,-15.6 319.27,-14.94\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"319.26,-11.43 309.02,-14.16 318.73,-18.41 319.26,-11.43\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M309.31,-21.97C319.55,-21.6 327,-20.27 327,-18 327,-16.65 324.37,-15.64 320.09,-14.96\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"320.57,-11.4 310.31,-14.03 319.98,-18.37 320.57,-11.4\"/>\n",
        "<text text-anchor=\"middle\" x=\"337\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z2,z3\\}&#45;&gt;\\{z0,z1,z2,z3\\} -->\n",
        "<g id=\"edge15\" class=\"edge\">\n",
        "<title>\\{z0,z1,z2,z3\\}&#45;&gt;\\{z0,z1,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M309.37,-25.78C329.56,-26.42 347,-23.82 347,-18 347,-13.18 335.04,-10.57 319.46,-10.18\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"319.36,-6.68 309.37,-10.22 319.39,-13.68 319.36,-6.68\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M309.37,-26.06C329.56,-26.72 347,-24.03 347,-18 347,-13.1 335.49,-10.41 320.34,-9.92\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"320.37,-6.42 310.37,-9.94 320.38,-13.42 320.37,-6.42\"/>\n",
        "<text text-anchor=\"middle\" x=\"350.5\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z1,z2\\} -->\n",
@@ -845,22 +845,22 @@
        "<!-- \\{z1,z2\\}&#45;&gt;\\{z2,z3\\} -->\n",
        "<g id=\"edge17\" class=\"edge\">\n",
        "<title>\\{z1,z2\\}&#45;&gt;\\{z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M211.3,-521.81C206.06,-516.67 201.12,-510.63 198,-504 194.78,-497.14 193.28,-489.17 192.71,-481.64\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"196.21,-481.34 192.44,-471.44 189.21,-481.52 196.21,-481.34\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M211.3,-521.81C206.06,-516.67 201.12,-510.63 198,-504 194.89,-497.38 193.39,-489.72 192.77,-482.42\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"196.24,-482.32 192.44,-472.44 189.25,-482.54 196.24,-482.32\"/>\n",
        "<text text-anchor=\"middle\" x=\"201.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z1,z2\\}&#45;&gt;\\{z2,z3\\} -->\n",
        "<g id=\"edge33\" class=\"edge\">\n",
        "<title>\\{z1,z2\\}&#45;&gt;\\{z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M225.91,-521.8C220.32,-509.93 212.79,-493.93 206.45,-480.45\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"209.51,-478.73 202.08,-471.18 203.17,-481.71 209.51,-478.73\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M225.91,-521.8C220.41,-510.12 213.03,-494.45 206.76,-481.11\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"209.64,-480.03 202.22,-472.47 203.31,-483.01 209.64,-480.03\"/>\n",
        "<text text-anchor=\"middle\" x=\"220.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z1,z2\\}&#45;&gt;\\{z1,z2\\} -->\n",
        "<g id=\"edge6\" class=\"edge\">\n",
        "<title>\\{z1,z2\\}&#45;&gt;\\{z1,z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M263.69,-547.88C273.58,-547.88 281.5,-545.25 281.5,-540 281.5,-536.72 278.41,-534.46 273.67,-533.23\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"274.01,-529.75 263.69,-532.12 273.24,-536.71 274.01,-529.75\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M263.69,-548.16C273.58,-548.16 281.5,-545.44 281.5,-540 281.5,-536.77 278.71,-534.5 274.37,-533.19\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"275.05,-529.62 264.69,-531.84 274.17,-536.57 275.05,-529.62\"/>\n",
        "<text text-anchor=\"middle\" x=\"291.5\" y=\"-536.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z2\\} -->\n",
@@ -872,22 +872,22 @@
        "<!-- \\{z0,z1,z2\\}&#45;&gt;\\{z0,z2,z3\\} -->\n",
        "<g id=\"edge35\" class=\"edge\">\n",
        "<title>\\{z0,z1,z2\\}&#45;&gt;\\{z0,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M309,-347.8C309,-336.16 309,-320.55 309,-307.24\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"312.5,-307.18 309,-297.18 305.5,-307.18 312.5,-307.18\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M309,-347.8C309,-336.47 309,-321.36 309,-308.29\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"312.5,-308.47 309,-298.47 305.5,-308.47 312.5,-308.47\"/>\n",
        "<text text-anchor=\"middle\" x=\"312.5\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z2\\}&#45;&gt;\\{z0,z1,z2,z3\\} -->\n",
        "<g id=\"edge19\" class=\"edge\">\n",
        "<title>\\{z0,z1,z2\\}&#45;&gt;\\{z0,z1,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M275.32,-347.88C251.95,-333.36 225,-310.08 225,-280 225,-280 225,-280 225,-104 225,-82.92 234.86,-61.26 244.54,-45.08\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"247.74,-46.56 250.13,-36.23 241.83,-42.81 247.74,-46.56\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M274.83,-347.58C251.58,-333.04 225,-309.88 225,-280 225,-280 225,-280 225,-104 225,-83.12 234.68,-61.67 244.26,-45.54\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"247.76,-47.56 250.13,-37.23 241.84,-43.82 247.76,-47.56\"/>\n",
        "<text text-anchor=\"middle\" x=\"228.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z2\\}&#45;&gt;\\{z0,z1,z2\\} -->\n",
        "<g id=\"edge7\" class=\"edge\">\n",
        "<title>\\{z0,z1,z2\\}&#45;&gt;\\{z0,z1,z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M347.21,-373.81C357.33,-373.36 365,-370.76 365,-366 365,-363.03 362.01,-360.89 357.29,-359.61\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"357.6,-356.12 347.21,-358.19 356.63,-363.05 357.6,-356.12\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M347.48,-374.07C357.47,-373.58 365,-370.89 365,-366 365,-363.1 362.34,-360.97 358.09,-359.62\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"358.9,-356.04 348.48,-357.93 357.8,-362.96 358.9,-356.04\"/>\n",
        "<text text-anchor=\"middle\" x=\"375\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z0,z2\\} -->\n",
@@ -899,22 +899,22 @@
        "<!-- \\{z0,z2\\}&#45;&gt;\\{z0,z2\\} -->\n",
        "<g id=\"edge8\" class=\"edge\">\n",
        "<title>\\{z0,z2\\}&#45;&gt;\\{z0,z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M462.69,-286.88C472.58,-286.88 480.5,-284.25 480.5,-279 480.5,-275.72 477.41,-273.46 472.67,-272.23\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"473.01,-268.75 462.69,-271.12 472.24,-275.71 473.01,-268.75\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M462.69,-287.16C472.58,-287.16 480.5,-284.44 480.5,-279 480.5,-275.77 477.71,-273.5 473.37,-272.19\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"474.05,-268.62 463.69,-270.84 473.17,-275.57 474.05,-268.62\"/>\n",
        "<text text-anchor=\"middle\" x=\"490.5\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">end</text>\n",
        "</g>\n",
        "<!-- \\{z0,z2\\}&#45;&gt;\\{z0,z1,z3\\} -->\n",
        "<g id=\"edge22\" class=\"edge\">\n",
        "<title>\\{z0,z2\\}&#45;&gt;\\{z0,z1,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M424.94,-260.88C410.75,-230.74 381.22,-168.04 364.41,-132.35\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"367.46,-130.61 360.03,-123.05 361.12,-133.59 367.46,-130.61\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M424.79,-260.56C410.66,-230.56 381.65,-168.96 364.83,-133.25\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"367.66,-132.04 360.23,-124.48 361.33,-135.02 367.66,-132.04\"/>\n",
        "<text text-anchor=\"middle\" x=\"403.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z0,z2\\}&#45;&gt;\\{z0,z3\\} -->\n",
        "<g id=\"edge38\" class=\"edge\">\n",
        "<title>\\{z0,z2\\}&#45;&gt;\\{z0,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M436.84,-260.8C439.45,-249.16 442.94,-233.55 445.91,-220.24\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"449.39,-220.7 448.16,-210.18 442.56,-219.17 449.39,-220.7\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M436.84,-260.8C439.4,-249.35 442.82,-234.06 445.76,-220.89\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"449.33,-221.99 448.1,-211.47 442.5,-220.46 449.33,-221.99\"/>\n",
        "<text text-anchor=\"middle\" x=\"446.5\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0\\} -->\n",
@@ -926,15 +926,15 @@
        "<!-- \\{z0\\}&#45;&gt;\\{z0\\} -->\n",
        "<g id=\"edge9\" class=\"edge\">\n",
        "<title>\\{z0\\}&#45;&gt;\\{z0\\}</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M457.24,-543.93C467.02,-544.02 475,-542.71 475,-540 475,-538.35 472.04,-537.22 467.51,-536.61\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"467.41,-533.1 457.24,-536.07 467.04,-540.09 467.41,-533.1\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M457.24,-544.07C467.02,-544.16 475,-542.8 475,-540 475,-538.38 472.33,-537.24 468.19,-536.59\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"468.43,-533.03 458.24,-535.93 468.01,-540.02 468.43,-533.03\"/>\n",
        "<text text-anchor=\"middle\" x=\"487\" y=\"-536.3\" font-family=\"Times,serif\" font-size=\"14.00\">start</text>\n",
        "</g>\n",
        "<!-- \\{z0\\}&#45;&gt;\\{z0\\} -->\n",
        "<g id=\"edge40\" class=\"edge\">\n",
        "<title>\\{z0\\}&#45;&gt;\\{z0\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M457.1,-546.99C477.58,-549.34 499,-547.01 499,-540 499,-534.14 484.03,-531.55 467.16,-532.23\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"466.8,-528.75 457.1,-533.01 467.34,-535.73 466.8,-528.75\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M457.46,-547.28C477.83,-549.65 499,-547.22 499,-540 499,-534.08 484.76,-531.38 468.39,-531.91\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"468.17,-528.49 458.46,-532.72 468.69,-535.47 468.17,-528.49\"/>\n",
        "<text text-anchor=\"middle\" x=\"502.5\" y=\"-536.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1\\} -->\n",
@@ -946,36 +946,36 @@
        "<!-- \\{z0\\}&#45;&gt;\\{z0,z1\\} -->\n",
        "<g id=\"edge24\" class=\"edge\">\n",
        "<title>\\{z0\\}&#45;&gt;\\{z0,z1\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M430,-521.8C430,-510.16 430,-494.55 430,-481.24\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"433.5,-481.18 430,-471.18 426.5,-481.18 433.5,-481.18\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M430,-521.8C430,-510.47 430,-495.36 430,-482.29\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"433.5,-482.47 430,-472.47 426.5,-482.47 433.5,-482.47\"/>\n",
        "<text text-anchor=\"middle\" x=\"433.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z3\\}&#45;&gt;\\{z3\\} -->\n",
        "<g id=\"edge10\" class=\"edge\">\n",
        "<title>\\{z3\\}&#45;&gt;\\{z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M185.24,-369.93C195.02,-370.02 203,-368.71 203,-366 203,-364.35 200.04,-363.22 195.51,-362.61\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"195.41,-359.1 185.24,-362.07 195.04,-366.09 195.41,-359.1\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M185.24,-370.07C195.02,-370.16 203,-368.8 203,-366 203,-364.38 200.33,-363.24 196.19,-362.59\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"196.43,-359.03 186.24,-361.93 196.01,-366.02 196.43,-359.03\"/>\n",
        "<text text-anchor=\"middle\" x=\"206.5\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z3\\}&#45;&gt;\\{z3\\} -->\n",
        "<g id=\"edge26\" class=\"edge\">\n",
        "<title>\\{z3\\}&#45;&gt;\\{z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M185.2,-373.18C203.34,-375.2 221,-372.81 221,-366 221,-360.47 209.34,-357.85 195.24,-358.15\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"194.94,-354.66 185.2,-358.82 195.41,-361.64 194.94,-354.66\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M185.2,-373.44C203.34,-375.53 221,-373.05 221,-366 221,-360.38 209.79,-357.66 196.05,-357.85\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"195.95,-354.42 186.2,-358.56 196.4,-361.4 195.95,-354.42\"/>\n",
        "<text text-anchor=\"middle\" x=\"224.5\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z3\\}&#45;&gt;\\{z0,z2,z3\\} -->\n",
        "<g id=\"edge34\" class=\"edge\">\n",
        "<title>\\{z0,z1,z3\\}&#45;&gt;\\{z0,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M350.49,-123.28C347.83,-149.67 341.17,-201.34 327,-243 326,-245.95 324.78,-248.95 323.46,-251.9\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"320.26,-250.48 319.02,-261 326.55,-253.55 320.26,-250.48\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M350.49,-123.28C347.83,-149.67 341.17,-201.34 327,-243 326.11,-245.6 325.06,-248.25 323.92,-250.87\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"320.4,-249.11 319.21,-259.64 326.7,-252.15 320.4,-249.11\"/>\n",
        "<text text-anchor=\"middle\" x=\"347.5\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1,z3\\}&#45;&gt;\\{z0,z1,z2,z3\\} -->\n",
        "<g id=\"edge18\" class=\"edge\">\n",
        "<title>\\{z0,z1,z3\\}&#45;&gt;\\{z0,z1,z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M333.99,-86.8C320.84,-74.24 302.84,-57.05 288.26,-43.12\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"290.63,-40.55 280.98,-36.18 285.8,-45.61 290.63,-40.55\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M333.99,-86.8C321.05,-74.44 303.4,-57.59 288.94,-43.78\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"291.94,-41.84 282.29,-37.47 287.1,-46.91 291.94,-41.84\"/>\n",
        "<text text-anchor=\"middle\" x=\"316.5\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z1,z3\\} -->\n",
@@ -987,15 +987,15 @@
        "<!-- \\{z1,z3\\}&#45;&gt;\\{z2,z3\\} -->\n",
        "<g id=\"edge16\" class=\"edge\">\n",
        "<title>\\{z1,z3\\}&#45;&gt;\\{z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M319.48,-522.81C294.78,-509.27 259.36,-489.84 232.45,-475.08\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"234.12,-472.01 223.67,-470.27 230.76,-478.15 234.12,-472.01\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M319.11,-522.61C294.67,-509.21 259.91,-490.14 233.22,-475.51\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"235.24,-472.08 224.79,-470.34 231.88,-478.22 235.24,-472.08\"/>\n",
        "<text text-anchor=\"middle\" x=\"284.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z1,z3\\}&#45;&gt;\\{z2,z3\\} -->\n",
        "<g id=\"edge32\" class=\"edge\">\n",
        "<title>\\{z1,z3\\}&#45;&gt;\\{z2,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M332.86,-521.85C322.11,-511.22 307.21,-497.94 292,-489 273.78,-478.29 251.75,-470.06 233.2,-464.28\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"234.15,-460.91 223.57,-461.4 232.15,-467.62 234.15,-460.91\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M332.86,-521.85C322.11,-511.22 307.21,-497.94 292,-489 274.03,-478.44 252.36,-470.29 233.97,-464.52\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"235.15,-460.92 224.57,-461.4 233.14,-467.63 235.15,-460.92\"/>\n",
        "<text text-anchor=\"middle\" x=\"316.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z1\\} -->\n",
@@ -1007,43 +1007,43 @@
        "<!-- \\{z1\\}&#45;&gt;\\{z2\\} -->\n",
        "<g id=\"edge20\" class=\"edge\">\n",
        "<title>\\{z1\\}&#45;&gt;\\{z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M27.04,-521.67C27.64,-511.73 29.39,-499.23 34,-489 35.54,-485.59 37.52,-482.26 39.72,-479.09\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"42.53,-481.17 45.94,-471.14 37.02,-476.86 42.53,-481.17\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M27.04,-521.67C27.64,-511.73 29.39,-499.23 34,-489 35.45,-485.79 37.28,-482.65 39.33,-479.65\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"42.57,-482.19 45.94,-472.14 37.04,-477.89 42.57,-482.19\"/>\n",
        "<text text-anchor=\"middle\" x=\"37.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z1\\}&#45;&gt;\\{z2\\} -->\n",
        "<g id=\"edge36\" class=\"edge\">\n",
        "<title>\\{z1\\}&#45;&gt;\\{z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M34.49,-521.8C39.65,-509.93 46.62,-493.93 52.49,-480.45\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"55.74,-481.74 56.52,-471.18 49.32,-478.95 55.74,-481.74\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M34.49,-521.8C39.52,-510.24 46.26,-494.75 52.03,-481.5\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"55.61,-483.03 56.4,-472.47 49.2,-480.24 55.61,-483.03\"/>\n",
        "<text text-anchor=\"middle\" x=\"51.5\" y=\"-492.8\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z3\\}&#45;&gt;\\{z0,z1,z3\\} -->\n",
        "<g id=\"edge21\" class=\"edge\">\n",
        "<title>\\{z0,z3\\}&#45;&gt;\\{z0,z1,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M440.37,-173.97C432.79,-163.65 422.24,-150.66 411,-141 405.84,-136.57 400.05,-132.37 394.16,-128.53\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"395.87,-125.47 385.53,-123.16 392.17,-131.41 395.87,-125.47\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M440.37,-173.97C432.79,-163.65 422.24,-150.66 411,-141 406.02,-136.72 400.45,-132.66 394.77,-128.93\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"397.17,-125.67 386.83,-123.34 393.46,-131.61 397.17,-125.67\"/>\n",
        "<text text-anchor=\"middle\" x=\"427.5\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z0,z3\\}&#45;&gt;\\{z0,z3\\} -->\n",
        "<g id=\"edge37\" class=\"edge\">\n",
        "<title>\\{z0,z3\\}&#45;&gt;\\{z0,z3\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M481.69,-199.88C491.58,-199.88 499.5,-197.25 499.5,-192 499.5,-188.72 496.41,-186.46 491.67,-185.23\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"492.01,-181.75 481.69,-184.12 491.24,-188.71 492.01,-181.75\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M481.69,-200.16C491.58,-200.16 499.5,-197.44 499.5,-192 499.5,-188.77 496.71,-186.5 492.37,-185.19\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"493.05,-181.62 482.69,-183.84 492.17,-188.57 493.05,-181.62\"/>\n",
        "<text text-anchor=\"middle\" x=\"503\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1\\}&#45;&gt;\\{z0,z1,z2\\} -->\n",
        "<g id=\"edge23\" class=\"edge\">\n",
        "<title>\\{z0,z1\\}&#45;&gt;\\{z0,z1,z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M405.51,-434.8C387.15,-421.9 361.81,-404.1 341.71,-389.98\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"343.64,-387.06 333.45,-384.18 339.62,-392.79 343.64,-387.06\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M405.22,-434.59C387.11,-421.87 362.36,-404.48 342.49,-390.52\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"344.94,-387.27 334.75,-384.38 340.92,-393 344.94,-387.27\"/>\n",
        "<text text-anchor=\"middle\" x=\"379.5\" y=\"-405.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{z0,z1\\}&#45;&gt;\\{z0,z2\\} -->\n",
        "<g id=\"edge39\" class=\"edge\">\n",
        "<title>\\{z0,z1\\}&#45;&gt;\\{z0,z2\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M430.3,-434.88C430.82,-405 431.9,-343.11 432.52,-307.27\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"436.03,-307.11 432.7,-297.05 429.03,-306.99 436.03,-307.11\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M430.3,-434.56C430.82,-404.81 431.88,-344.01 432.51,-308.17\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"436.02,-308.54 432.7,-298.48 429.02,-308.42 436.02,-308.54\"/>\n",
        "<text text-anchor=\"middle\" x=\"434.5\" y=\"-362.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "<!-- \\{\\} -->\n",
@@ -1055,15 +1055,15 @@
        "<!-- \\{\\}&#45;&gt;\\{\\} -->\n",
        "<g id=\"edge25\" class=\"edge\">\n",
        "<title>\\{\\}&#45;&gt;\\{\\}</title>\n",
-       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M596.24,-543.93C606.02,-544.02 614,-542.71 614,-540 614,-538.35 611.04,-537.22 606.51,-536.61\"/>\n",
-       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"606.41,-533.1 596.24,-536.07 606.04,-540.09 606.41,-533.1\"/>\n",
+       "<path fill=\"none\" stroke=\"#473c8b\" d=\"M596.24,-544.07C606.02,-544.16 614,-542.8 614,-540 614,-538.38 611.33,-537.24 607.19,-536.59\"/>\n",
+       "<polygon fill=\"#473c8b\" stroke=\"#473c8b\" points=\"607.43,-533.03 597.24,-535.93 607.01,-540.02 607.43,-533.03\"/>\n",
        "<text text-anchor=\"middle\" x=\"617.5\" y=\"-536.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n",
        "</g>\n",
        "<!-- \\{\\}&#45;&gt;\\{\\} -->\n",
        "<g id=\"edge41\" class=\"edge\">\n",
        "<title>\\{\\}&#45;&gt;\\{\\}</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M596.2,-547.18C614.34,-549.2 632,-546.81 632,-540 632,-534.47 620.34,-531.85 606.24,-532.15\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"605.94,-528.66 596.2,-532.82 606.41,-535.64 605.94,-528.66\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M596.2,-547.44C614.34,-549.53 632,-547.05 632,-540 632,-534.38 620.79,-531.66 607.05,-531.85\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"606.95,-528.42 597.2,-532.56 607.4,-535.4 606.95,-528.42\"/>\n",
        "<text text-anchor=\"middle\" x=\"635.5\" y=\"-536.3\" font-family=\"Times,serif\" font-size=\"14.00\">0</text>\n",
        "</g>\n",
        "</g>\n",
diff --git a/notebooks/models/NQueens_Puzzle.ipynb b/notebooks/models/NQueens_Puzzle.ipynb
index 7af4b65f3b57cbcbaf456c5dfc8b49568cfcb5c7..fb1f9e723e7f3b2581e6bfb7b12010a169b847ae 100644
--- a/notebooks/models/NQueens_Puzzle.ipynb
+++ b/notebooks/models/NQueens_Puzzle.ipynb
@@ -112,7 +112,7 @@
     {
      "data": {
       "text/markdown": [
-       "$\\renewcommand{\\emptyset}{\\mathord\\varnothing}(\\emptyset\\mapsto 1)$"
+       "$\\def\\emptyset{\\mathord\\varnothing}(\\emptyset\\mapsto 1)$"
       ],
       "text/plain": [
        "(∅↦1)"
diff --git a/notebooks/tests/animate.ipynb b/notebooks/tests/animate.ipynb
index 41c53bbc0781266010f227b9c99f40c61de0a74a..18ed9e29e05dea0641d6897849cdbb23c6532cf4 100644
--- a/notebooks/tests/animate.ipynb
+++ b/notebooks/tests/animate.ipynb
@@ -369,15 +369,11 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "ProBError",
-     "evalue": "ProB reported Errors\nProB returned error messages:\nError: INITIALISATION FAILS (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:6:15 to 6:44)",
+     "ename": "ExecuteOperationException",
+     "evalue": "Executing operation $initialise_machine with additional predicate produced errors: Could not execute operation INITIALISATION in state 2 with additional predicate",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mProB reported Errors\u001b[0m",
-      "\u001b[1m\u001b[31mError: INITIALISATION FAILS (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:6:15 to 6:44)\u001b[0m",
-      "\u001b[1m\u001b[30mINVARIANT value : min_value..max_value\u001b[0m",
-      "\u001b[1m\u001b[30mINITIALISATION \u001b[0m\u001b[1m\u001b[30m\u001b[41mvalue :: min_value..max_value\u001b[0m\u001b[1m\u001b[30m\u001b[0m",
-      "\u001b[1m\u001b[30mOPERATIONS\u001b[0m"
+      "\u001b[1m\u001b[31mde.prob.animator.command.ExecuteOperationException: Executing operation $initialise_machine with additional predicate produced errors: Could not execute operation INITIALISATION in state 2 with additional predicate\u001b[0m"
      ]
     }
    ],
@@ -682,15 +678,11 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "ProBError",
-     "evalue": "ProB reported Errors\nProB returned error messages:\nError: INITIALISATION FAILS (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:4:15 to 4:26)",
+     "ename": "ExecuteOperationException",
+     "evalue": "Executing operation $initialise_machine with additional predicate produced errors: Could not execute operation INITIALISATION in state root with additional predicate",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mProB reported Errors\u001b[0m",
-      "\u001b[1m\u001b[31mError: INITIALISATION FAILS (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:4:15 to 4:26)\u001b[0m",
-      "\u001b[1m\u001b[30mINVARIANT z : MININT..MAXINT\u001b[0m",
-      "\u001b[1m\u001b[30mINITIALISATION \u001b[0m\u001b[1m\u001b[30m\u001b[41mz :: {0, 1}\u001b[0m\u001b[1m\u001b[30m\u001b[0m",
-      "\u001b[1m\u001b[30mOPERATIONS\u001b[0m"
+      "\u001b[1m\u001b[31mde.prob.animator.command.ExecuteOperationException: Executing operation $initialise_machine with additional predicate produced errors: Could not execute operation INITIALISATION in state root with additional predicate\u001b[0m"
      ]
     }
    ],
diff --git a/notebooks/tests/assert.ipynb b/notebooks/tests/assert.ipynb
index a6b39cfeaefd4f8f000de42e77f68ec453e1c4c2..662bcc08a4591853b1a40cff2eb15c064f7b5b10 100644
--- a/notebooks/tests/assert.ipynb
+++ b/notebooks/tests/assert.ipynb
@@ -223,10 +223,10 @@
    "outputs": [
     {
      "ename": "CommandExecutionException",
-     "evalue": ":assert: Error while evaluating assertion: (ERROR: Type mismatch: Expected INTEGER, but was POW(_A) in '{}')",
+     "evalue": ":assert: Error while evaluating assertion: (ERROR: Type mismatch: Expected INTEGER, but was POW(_A) in 'empty_set')",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[31m:assert: Error while evaluating assertion: (ERROR: Type mismatch: Expected INTEGER, but was POW(_A) in '{}')\u001b[0m"
+      "\u001b[1m\u001b[31m:assert: Error while evaluating assertion: (ERROR: Type mismatch: Expected INTEGER, but was POW(_A) in 'empty_set')\u001b[0m"
      ]
     }
    ],
diff --git a/notebooks/tests/chr_tests.ipynb b/notebooks/tests/chr_tests.ipynb
index 1fa46fbdcc27ef1bb15efce19ba64fc784fd9fa9..3b4b00c4dabf0ed4f6b00e56da3b87ab67bb76d2 100644
--- a/notebooks/tests/chr_tests.ipynb
+++ b/notebooks/tests/chr_tests.ipynb
@@ -111,17 +111,13 @@
    },
    "outputs": [
     {
-     "data": {
-      "text/markdown": [
-       "$\\mathit{time\\_out}$"
-      ],
-      "text/plain": [
-       "time_out"
-      ]
-     },
-     "execution_count": 6,
-     "metadata": {},
-     "output_type": "execute_result"
+     "ename": "WithSourceCodeException",
+     "evalue": "de.prob.exception.ProBError: time_out\nProB returned error messages:\nInternal error: Unknown error type: time_out",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mtime_out\u001b[0m",
+      "\u001b[1m\u001b[31mInternal error: Unknown error type: time_out\u001b[0m"
+     ]
     }
    ],
    "source": [
diff --git a/notebooks/tests/dot.ipynb b/notebooks/tests/dot.ipynb
index 07c381be902ed031dd4046fa76f3256901c8af7d..3ae2467843d226d5be7d27175e8c50b81ab01083 100644
--- a/notebooks/tests/dot.ipynb
+++ b/notebooks/tests/dot.ipynb
@@ -40,7 +40,8 @@
        "* `variable_modification_graph` - Variable Read/Write Graph: Show variable modification by operations and reading in guards\n",
        "* `definitions` - Definitions Graph: Show dependence graph of DEFINITIONS\n",
        "* `predicate_dependency` - Predicate Dependency Graph...: Show dependence graph of conjuncts of a predicate\n",
-       "* `last_error` - Last Error Formula Tree: Show last error source as a formula tree\n"
+       "* `last_error` - Last Error Formula Tree: Show last error source as a formula tree\n",
+       "* `id_value_formula_tree` - Value of Identifier as Formula Tree...: Show value of an identifier as a formula tree (mainly useful for symbolic values)\n"
       ],
       "text/plain": [
        ":dot COMMAND [FORMULA]\n",
@@ -72,7 +73,8 @@
        "* `variable_modification_graph` - Variable Read/Write Graph: Show variable modification by operations and reading in guards\n",
        "* `definitions` - Definitions Graph: Show dependence graph of DEFINITIONS\n",
        "* `predicate_dependency` - Predicate Dependency Graph...: Show dependence graph of conjuncts of a predicate\n",
-       "* `last_error` - Last Error Formula Tree: Show last error source as a formula tree\n"
+       "* `last_error` - Last Error Formula Tree: Show last error source as a formula tree\n",
+       "* `id_value_formula_tree` - Value of Identifier as Formula Tree...: Show value of an identifier as a formula tree (mainly useful for symbolic values)\n"
       ]
      },
      "execution_count": 1,
@@ -95,14 +97,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: visited_states Pages: 1 -->\n",
        "<svg width=\"94pt\" height=\"50pt\"\n",
        " viewBox=\"0.00 0.00 94.18 50.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 46)\">\n",
        "<title>visited_states</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-46 90.18,-46 90.18,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-46 90.18,-46 90.18,4 -4,4\"/>\n",
        "<!-- root -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>root</title>\n",
@@ -158,14 +160,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: visited_states Pages: 1 -->\n",
        "<svg width=\"143pt\" height=\"215pt\"\n",
        " viewBox=\"0.00 0.00 143.09 215.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 211)\">\n",
        "<title>visited_states</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-211 139.09,-211 139.09,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-211 139.09,-211 139.09,4 -4,4\"/>\n",
        "<!-- root -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>root</title>\n",
@@ -181,8 +183,8 @@
        "<!-- root&#45;&gt;0 -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>root&#45;&gt;0</title>\n",
-       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"1,5\" d=\"M43.09,-164.81C43.09,-137.15 43.09,-87.19 43.09,-54.56\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"46.59,-54.22 43.09,-44.22 39.59,-54.22 46.59,-54.22\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"1,5\" d=\"M43.09,-163.82C43.09,-136.28 43.09,-87.89 43.09,-55.64\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"46.59,-55.96 43.09,-45.96 39.59,-55.96 46.59,-55.96\"/>\n",
        "<text text-anchor=\"middle\" x=\"89.09\" y=\"-101.4\" font-family=\"Times,serif\" font-size=\"12.00\">INITIALISATION</text>\n",
        "</g>\n",
        "</g>\n",
@@ -212,14 +214,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: g Pages: 1 -->\n",
        "<svg width=\"62pt\" height=\"46pt\"\n",
        " viewBox=\"0.00 0.00 62.00 46.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 42)\">\n",
        "<title>g</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-42 58,-42 58,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-42 58,-42 58,4 -4,4\"/>\n",
        "<!-- Noderoot -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>Noderoot</title>\n",
@@ -254,14 +256,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: state Pages: 1 -->\n",
        "<svg width=\"325pt\" height=\"218pt\"\n",
        " viewBox=\"0.00 0.00 325.00 218.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 214)\">\n",
        "<title>state</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-214 321,-214 321,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-214 321,-214 321,4 -4,4\"/>\n",
        "<!-- 3 -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>3</title>\n",
@@ -277,8 +279,8 @@
        "<!-- 3&#45;&gt;1 -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>3&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.65,-185.62C58.14,-180.83 38.35,-171.99 28,-156 23.67,-149.31 22.32,-140.99 22.36,-133.07\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"25.85,-133.29 23.09,-123.06 18.87,-132.77 25.85,-133.29\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M74.65,-185.62C58.14,-180.83 38.35,-171.99 28,-156 23.82,-149.54 22.41,-141.55 22.36,-133.87\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"25.91,-134.27 23.09,-124.06 18.93,-133.8 25.91,-134.27\"/>\n",
        "<text text-anchor=\"middle\" x=\"96\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">{(1|&#45;&gt;2),(2|&#45;&gt;3),(3|&#45;&gt;1)}</text>\n",
        "</g>\n",
        "<!-- 2 -->\n",
@@ -290,15 +292,15 @@
        "<!-- 1&#45;&gt;2 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>1&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M23.09,-86.94C21.7,-76.61 21.77,-63.62 28,-54 36.41,-41.01 51.05,-32.74 65.1,-27.52\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"66.25,-30.83 74.65,-24.38 64.06,-24.18 66.25,-30.83\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M23.09,-86.94C21.7,-76.61 21.77,-63.62 28,-54 36.25,-41.26 50.49,-33.06 64.29,-27.83\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"65.27,-30.86 73.65,-24.38 63.06,-24.22 65.27,-30.86\"/>\n",
        "<text text-anchor=\"middle\" x=\"96\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">{(1|&#45;&gt;2),(2|&#45;&gt;3),(3|&#45;&gt;1)}</text>\n",
        "</g>\n",
        "<!-- 2&#45;&gt;3 -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>2&#45;&gt;3</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M129.25,-27.16C142.2,-32.56 156.46,-41.08 164,-54 186.86,-93.15 186.86,-116.85 164,-156 158.23,-165.89 148.51,-173.2 138.47,-178.51\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"136.81,-175.42 129.25,-182.84 139.79,-181.76 136.81,-175.42\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M129.25,-27.16C142.2,-32.56 156.46,-41.08 164,-54 186.86,-93.15 186.86,-116.85 164,-156 158.34,-165.69 148.91,-172.9 139.08,-178.19\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"137.79,-175.4 130.25,-182.84 140.79,-181.72 137.79,-175.4\"/>\n",
        "<text text-anchor=\"middle\" x=\"249\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">{(1|&#45;&gt;2),(2|&#45;&gt;3),(3|&#45;&gt;1)}</text>\n",
        "</g>\n",
        "</g>\n",
@@ -328,14 +330,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: state Pages: 1 -->\n",
        "<svg width=\"220pt\" height=\"392pt\"\n",
        " viewBox=\"0.00 0.00 220.11 392.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 388)\">\n",
        "<title>state</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-388 216.11,-388 216.11,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-388 216.11,-388 216.11,4 -4,4\"/>\n",
        "<!-- 4 -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>4</title>\n",
@@ -351,15 +353,15 @@
        "<!-- 4&#45;&gt;2 -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>4&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M79.4,-260.77C66.39,-248.14 50.29,-229.79 42.11,-210 31.98,-185.5 30.49,-155.04 31.07,-133.43\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"34.57,-133.45 31.51,-123.31 27.58,-133.15 34.57,-133.45\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M79.4,-260.77C66.39,-248.14 50.29,-229.79 42.11,-210 32.07,-185.72 30.52,-155.6 31.05,-134.03\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"34.58,-134.45 31.51,-124.31 27.59,-134.15 34.58,-134.45\"/>\n",
        "<text text-anchor=\"middle\" x=\"53.11\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">half</text>\n",
        "</g>\n",
        "<!-- 4&#45;&gt;2 -->\n",
        "<g id=\"edge8\" class=\"edge\">\n",
        "<title>4&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M72.04,-264.74C52.42,-253.35 27.71,-234.83 18.11,-210 8.4,-184.88 14.87,-154.15 22.1,-132.63\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"25.41,-133.75 25.52,-123.16 18.83,-131.37 25.41,-133.75\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M71.64,-264.5C52.08,-253.09 27.64,-234.66 18.11,-210 8.49,-185.11 14.76,-154.71 21.9,-133.22\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"25.43,-134.75 25.52,-124.16 18.84,-132.38 25.43,-134.75\"/>\n",
        "<text text-anchor=\"middle\" x=\"23.61\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 1 -->\n",
@@ -371,8 +373,8 @@
        "<!-- 4&#45;&gt;1 -->\n",
        "<g id=\"edge9\" class=\"edge\">\n",
        "<title>4&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M111.6,-260.84C120.38,-247.66 131.37,-228.63 136.11,-210 150.81,-152.22 129.79,-82.84 115.48,-45.66\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"118.61,-44.06 111.66,-36.06 112.11,-46.64 118.61,-44.06\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M111.79,-260.56C120.53,-247.39 131.4,-228.5 136.11,-210 150.71,-152.62 130.08,-83.79 115.78,-46.42\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"118.71,-45.32 111.77,-37.32 112.2,-47.91 118.71,-45.32\"/>\n",
        "<text text-anchor=\"middle\" x=\"145.61\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 3 -->\n",
@@ -384,22 +386,22 @@
        "<!-- 4&#45;&gt;3 -->\n",
        "<g id=\"edge7\" class=\"edge\">\n",
        "<title>4&#45;&gt;3</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M99.31,-260.8C99.45,-249.16 99.63,-233.55 99.79,-220.24\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"103.29,-220.22 99.91,-210.18 96.29,-220.13 103.29,-220.22\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M99.31,-260.8C99.44,-249.47 99.62,-234.36 99.78,-221.29\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"103.28,-221.51 99.9,-211.47 96.29,-221.43 103.28,-221.51\"/>\n",
        "<text text-anchor=\"middle\" x=\"104.61\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 2&#45;&gt;1 -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>2&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M44.02,-86.75C50.57,-76.83 59.32,-64.33 68.11,-54 71.11,-50.47 74.42,-46.89 77.78,-43.45\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"80.48,-45.7 85.11,-36.17 75.55,-40.73 80.48,-45.7\"/>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M44.02,-86.75C50.57,-76.83 59.32,-64.33 68.11,-54 71.03,-50.56 74.24,-47.09 77.51,-43.73\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"79.49,-46.7 84.11,-37.17 74.55,-41.74 79.49,-46.7\"/>\n",
        "<text text-anchor=\"middle\" x=\"79.11\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">half</text>\n",
        "</g>\n",
        "<!-- 2&#45;&gt;1 -->\n",
        "<g id=\"edge12\" class=\"edge\">\n",
        "<title>2&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M32.23,-86.86C32.53,-76.5 34.45,-63.5 41.11,-54 47.7,-44.59 57.68,-37.42 67.76,-32.1\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"69.43,-35.19 76.95,-27.73 66.42,-28.86 69.43,-35.19\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M32.23,-86.86C32.53,-76.5 34.45,-63.5 41.11,-54 47.52,-44.85 57.11,-37.83 66.9,-32.56\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"68.15,-35.36 75.63,-27.87 65.1,-29.06 68.15,-35.36\"/>\n",
        "<text text-anchor=\"middle\" x=\"46.61\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5 -->\n",
@@ -411,43 +413,43 @@
        "<!-- 5&#45;&gt;4 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>5&#45;&gt;4</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M136.6,-347.8C129.97,-335.82 121.01,-319.62 113.52,-306.06\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"116.51,-304.23 108.61,-297.18 110.38,-307.62 116.51,-304.23\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M136.6,-347.8C130.08,-336.01 121.3,-320.14 113.88,-306.72\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"116.67,-305.52 108.77,-298.47 110.54,-308.91 116.67,-305.52\"/>\n",
        "<text text-anchor=\"middle\" x=\"130.61\" y=\"-318.8\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5&#45;&gt;2 -->\n",
        "<g id=\"edge5\" class=\"edge\">\n",
        "<title>5&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M119.03,-349.49C87.1,-329.5 35.56,-291.48 13.11,-243 -5.95,-201.86 -1.96,-184.1 12.11,-141 13.09,-138 14.36,-134.98 15.8,-132.04\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"19,-133.5 20.79,-123.06 12.87,-130.1 19,-133.5\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M118.74,-349.31C86.8,-329.27 35.5,-291.33 13.11,-243 -5.95,-201.86 -1.96,-184.1 12.11,-141 12.97,-138.35 14.07,-135.68 15.31,-133.07\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"18.86,-134.87 20.57,-124.42 12.71,-131.52 18.86,-134.87\"/>\n",
        "<text text-anchor=\"middle\" x=\"18.61\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5&#45;&gt;1 -->\n",
        "<g id=\"edge6\" class=\"edge\">\n",
        "<title>5&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M165.65,-347.85C181.46,-332 201.11,-306.89 201.11,-280 201.11,-280 201.11,-280 201.11,-104 201.11,-70.4 167.79,-46.99 140.21,-33.37\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"141.67,-30.19 131.13,-29.12 138.7,-36.53 141.67,-30.19\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M165.96,-347.54C181.72,-331.67 201.11,-306.72 201.11,-280 201.11,-280 201.11,-280 201.11,-104 201.11,-70.8 168.56,-47.54 141.17,-33.85\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"142.92,-30.33 132.39,-29.23 139.94,-36.66 142.92,-30.33\"/>\n",
        "<text text-anchor=\"middle\" x=\"206.61\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5&#45;&gt;3 -->\n",
        "<g id=\"edge4\" class=\"edge\">\n",
        "<title>5&#45;&gt;3</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M146.21,-347.69C145.9,-326.73 143.94,-290.57 135.11,-261 130.75,-246.4 123.26,-231.23 116.33,-218.93\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"119.27,-217.01 111.2,-210.14 113.22,-220.54 119.27,-217.01\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M146.21,-347.69C145.9,-326.73 143.94,-290.57 135.11,-261 130.86,-246.79 123.66,-232.03 116.88,-219.91\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"119.42,-218.31 111.37,-211.42 113.37,-221.82 119.42,-218.31\"/>\n",
        "<text text-anchor=\"middle\" x=\"147.61\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 3&#45;&gt;2 -->\n",
        "<g id=\"edge10\" class=\"edge\">\n",
        "<title>3&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M86.55,-173.8C76.92,-161.59 63.84,-144.99 53.03,-131.28\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"55.59,-128.86 46.65,-123.18 50.09,-133.2 55.59,-128.86\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M86.55,-173.8C77.08,-161.78 64.26,-145.52 53.55,-131.94\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"55.82,-130.15 46.88,-124.47 50.32,-134.49 55.82,-130.15\"/>\n",
        "<text text-anchor=\"middle\" x=\"75.61\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 3&#45;&gt;1 -->\n",
        "<g id=\"edge11\" class=\"edge\">\n",
        "<title>3&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M100.51,-173.88C101.2,-144 102.64,-82.11 103.47,-46.27\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"106.98,-46.13 103.71,-36.05 99.98,-45.97 106.98,-46.13\"/>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M100.51,-173.56C101.21,-143.81 102.62,-83.01 103.45,-47.17\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"106.97,-47.56 103.7,-37.48 99.97,-47.4 106.97,-47.56\"/>\n",
        "<text text-anchor=\"middle\" x=\"107.61\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "</g>\n",
@@ -497,14 +499,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: state Pages: 1 -->\n",
        "<svg width=\"243pt\" height=\"235pt\"\n",
        " viewBox=\"0.00 0.00 243.39 234.72\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 230.72)\">\n",
        "<title>state</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-230.72 239.39,-230.72 239.39,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-230.72 239.39,-230.72 239.39,4 -4,4\"/>\n",
        "<!-- 4 -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>4</title>\n",
@@ -520,16 +522,16 @@
        "<!-- 4&#45;&gt;2 -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>4&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M146.1,-36.33C154.53,-50.75 168.71,-70.94 181.47,-87.06\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"178.95,-89.51 187.97,-95.07 184.38,-85.1 178.95,-89.51\"/>\n",
-       "<text text-anchor=\"middle\" x=\"152.78\" y=\"-65.49\" font-family=\"Times,serif\" font-size=\"14.00\">half</text>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M146.1,-36.33C154.46,-50.61 168.45,-70.57 181.11,-86.62\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"178.95,-88.51 187.97,-94.07 184.39,-84.1 178.95,-88.51\"/>\n",
+       "<text text-anchor=\"middle\" x=\"152.61\" y=\"-65.27\" font-family=\"Times,serif\" font-size=\"14.00\">half</text>\n",
        "</g>\n",
        "<!-- 4&#45;&gt;2 -->\n",
        "<g id=\"edge8\" class=\"edge\">\n",
        "<title>4&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M159.48,-36.25C171.39,-50.48 185.9,-70.37 196.11,-86.42\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"193.37,-88.64 201.58,-95.35 199.34,-84.99 193.37,-88.64\"/>\n",
-       "<text text-anchor=\"middle\" x=\"172.3\" y=\"-65.14\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M159.48,-36.25C171.21,-50.26 185.46,-69.76 195.64,-85.67\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"193.18,-87.35 201.39,-94.04 199.14,-83.68 193.18,-87.35\"/>\n",
+       "<text text-anchor=\"middle\" x=\"172.06\" y=\"-64.76\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 1 -->\n",
        "<g id=\"node3\" class=\"node\">\n",
@@ -540,9 +542,9 @@
        "<!-- 4&#45;&gt;1 -->\n",
        "<g id=\"edge9\" class=\"edge\">\n",
        "<title>4&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M126.02,-36C106.38,-63.03 69.16,-114.27 46.36,-145.65\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"43.39,-143.78 40.34,-153.93 49.05,-147.9 43.39,-143.78\"/>\n",
-       "<text text-anchor=\"middle\" x=\"80.69\" y=\"-94.62\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M125.8,-36.31C106.17,-63.33 69.29,-114.08 46.57,-145.36\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"43.33,-142.87 40.28,-153.01 48.99,-146.98 43.33,-142.87\"/>\n",
+       "<text text-anchor=\"middle\" x=\"80.69\" y=\"-94.63\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 3 -->\n",
        "<g id=\"node5\" class=\"node\">\n",
@@ -553,23 +555,23 @@
        "<!-- 4&#45;&gt;3 -->\n",
        "<g id=\"edge7\" class=\"edge\">\n",
        "<title>4&#45;&gt;3</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M111.97,-26.82C97.61,-31.48 79.78,-37.28 64.16,-42.35\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"62.7,-39.14 54.28,-45.56 64.87,-45.8 62.7,-39.14\"/>\n",
-       "<text text-anchor=\"middle\" x=\"82.56\" y=\"-38.38\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M111.68,-26.91C97.46,-31.53 79.88,-37.24 64.43,-42.26\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"63.57,-39.19 55.14,-45.61 65.73,-45.84 63.57,-39.19\"/>\n",
+       "<text text-anchor=\"middle\" x=\"82.55\" y=\"-38.39\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 2&#45;&gt;1 -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>2&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.28,-117.04C149.97,-124.88 98.36,-141.39 63.54,-154.51\"/>\n",
-       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"62.27,-151.25 54.19,-158.11 64.78,-157.78 62.27,-151.25\"/>\n",
-       "<text text-anchor=\"middle\" x=\"111.41\" y=\"-139.58\" font-family=\"Times,serif\" font-size=\"14.00\">half</text>\n",
+       "<path fill=\"none\" stroke=\"firebrick\" d=\"M181.28,-117.04C150.33,-124.79 99.54,-141.01 64.74,-154.06\"/>\n",
+       "<polygon fill=\"firebrick\" stroke=\"firebrick\" points=\"63.57,-151.14 55.49,-157.99 66.08,-157.67 63.57,-151.14\"/>\n",
+       "<text text-anchor=\"middle\" x=\"112.01\" y=\"-124.35\" font-family=\"Times,serif\" font-size=\"14.00\">half</text>\n",
        "</g>\n",
        "<!-- 2&#45;&gt;1 -->\n",
        "<g id=\"edge12\" class=\"edge\">\n",
        "<title>2&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M181.22,-127.54C150.04,-139.85 98.76,-156.65 63.97,-166.04\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"62.97,-162.68 54.18,-168.59 64.74,-169.46 62.97,-162.68\"/>\n",
-       "<text text-anchor=\"middle\" x=\"128.09\" y=\"-150.59\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M181.22,-127.54C150.26,-139.77 99.49,-156.41 64.72,-165.84\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"64.26,-162.6 55.48,-168.52 66.04,-169.37 64.26,-162.6\"/>\n",
+       "<text text-anchor=\"middle\" x=\"117.47\" y=\"-150.49\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5 -->\n",
        "<g id=\"node4\" class=\"node\">\n",
@@ -580,44 +582,44 @@
        "<!-- 5&#45;&gt;4 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>5&#45;&gt;4</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M139.1,-190.43C139.1,-157.04 139.1,-85.99 139.1,-46.3\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"142.6,-46.23 139.1,-36.23 135.6,-46.23 142.6,-46.23\"/>\n",
-       "<text text-anchor=\"middle\" x=\"133.6\" y=\"-122.17\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M139.1,-190.43C139.1,-157.25 139.1,-86.89 139.1,-47.07\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"142.6,-47.23 139.1,-37.23 135.6,-47.23 142.6,-47.23\"/>\n",
+       "<text text-anchor=\"middle\" x=\"133.6\" y=\"-122.55\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5&#45;&gt;2 -->\n",
        "<g id=\"edge5\" class=\"edge\">\n",
        "<title>5&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M152.46,-190.33C162.88,-175.99 177.49,-155.88 189.16,-139.82\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"192.26,-141.51 195.3,-131.37 186.59,-137.4 192.26,-141.51\"/>\n",
-       "<text text-anchor=\"middle\" x=\"165.31\" y=\"-168.87\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M152.46,-190.33C162.72,-176.22 177.04,-156.51 188.62,-140.57\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"192.02,-142.84 195.07,-132.69 186.36,-138.72 192.02,-142.84\"/>\n",
+       "<text text-anchor=\"middle\" x=\"165.04\" y=\"-169.25\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5&#45;&gt;1 -->\n",
        "<g id=\"edge6\" class=\"edge\">\n",
        "<title>5&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M111.97,-199.9C97.61,-195.24 79.78,-189.44 64.16,-184.37\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"64.87,-180.92 54.28,-181.16 62.7,-187.58 64.87,-180.92\"/>\n",
-       "<text text-anchor=\"middle\" x=\"82.56\" y=\"-195.94\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M111.68,-199.81C97.46,-195.19 79.88,-189.48 64.43,-184.46\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"65.73,-180.88 55.14,-181.11 63.57,-187.53 65.73,-180.88\"/>\n",
+       "<text text-anchor=\"middle\" x=\"82.55\" y=\"-195.93\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 5&#45;&gt;3 -->\n",
        "<g id=\"edge4\" class=\"edge\">\n",
        "<title>5&#45;&gt;3</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M126.02,-190.72C106.38,-163.69 69.16,-112.45 46.36,-81.07\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"49.05,-78.82 40.34,-72.79 43.39,-82.94 49.05,-78.82\"/>\n",
-       "<text text-anchor=\"middle\" x=\"80.69\" y=\"-139.7\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M125.8,-190.41C106.17,-163.39 69.29,-112.64 46.57,-81.36\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"48.99,-79.74 40.28,-73.71 43.33,-83.85 48.99,-79.74\"/>\n",
+       "<text text-anchor=\"middle\" x=\"80.69\" y=\"-139.69\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 3&#45;&gt;2 -->\n",
        "<g id=\"edge10\" class=\"edge\">\n",
        "<title>3&#45;&gt;2</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M54.16,-63.25C85.37,-73.39 136.76,-90.09 171.56,-101.39\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"170.75,-104.81 181.34,-104.57 172.91,-98.15 170.75,-104.81\"/>\n",
-       "<text text-anchor=\"middle\" x=\"107.36\" y=\"-86.12\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M54.16,-63.25C85.14,-73.32 136.02,-89.85 170.81,-101.15\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"169.45,-104.72 180.04,-104.48 171.62,-98.06 169.45,-104.72\"/>\n",
+       "<text text-anchor=\"middle\" x=\"106.98\" y=\"-86\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "<!-- 3&#45;&gt;1 -->\n",
        "<g id=\"edge11\" class=\"edge\">\n",
        "<title>3&#45;&gt;1</title>\n",
-       "<path fill=\"none\" stroke=\"sienna\" d=\"M27,-72.58C27,-91.56 27,-121.61 27,-143.76\"/>\n",
-       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"23.5,-143.92 27,-153.92 30.5,-143.92 23.5,-143.92\"/>\n",
-       "<text text-anchor=\"middle\" x=\"21.5\" y=\"-111.97\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
+       "<path fill=\"none\" stroke=\"sienna\" d=\"M27,-72.84C27,-91.7 27,-121.28 27,-143.29\"/>\n",
+       "<polygon fill=\"sienna\" stroke=\"sienna\" points=\"23.5,-143.01 27,-153.01 30.5,-143.01 23.5,-143.01\"/>\n",
+       "<text text-anchor=\"middle\" x=\"21.5\" y=\"-111.86\" font-family=\"Times,serif\" font-size=\"14.00\">gt</text>\n",
        "</g>\n",
        "</g>\n",
        "</svg>\n"
@@ -666,14 +668,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: g Pages: 1 -->\n",
        "<svg width=\"242pt\" height=\"110pt\"\n",
        " viewBox=\"0.00 0.00 242.00 110.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 106)\">\n",
        "<title>g</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-106 238,-106 238,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-106 238,-106 238,4 -4,4\"/>\n",
        "<!-- Noderoot -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>Noderoot</title>\n",
@@ -690,22 +692,22 @@
        "<!-- Node1&#45;&gt;Noderoot -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>Node1&#45;&gt;Noderoot</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M89.6,-74.5C81.43,-71.72 72.3,-68.6 63.62,-65.64\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"64.68,-62.31 54.08,-62.39 62.42,-68.93 64.68,-62.31\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M90.07,-74.66C82.07,-71.93 73.1,-68.88 64.53,-65.95\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"65.95,-62.4 55.35,-62.48 63.69,-69.02 65.95,-62.4\"/>\n",
        "</g>\n",
        "<!-- Node2 -->\n",
        "<g id=\"node3\" class=\"node\">\n",
        "<title>Node2</title>\n",
        "<polygon fill=\"white\" stroke=\"black\" points=\"90,-0.5 90,-46.5 144,-46.5 144,-0.5 90,-0.5\"/>\n",
        "<text text-anchor=\"middle\" x=\"117\" y=\"-31.3\" font-family=\"Times,serif\" font-size=\"14.00\">card</text>\n",
-       "<polyline fill=\"none\" stroke=\"black\" points=\"90,-23.5 144,-23.5 \"/>\n",
+       "<polyline fill=\"none\" stroke=\"black\" points=\"90,-23.5 144,-23.5\"/>\n",
        "<text text-anchor=\"middle\" x=\"117\" y=\"-8.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n",
        "</g>\n",
        "<!-- Node2&#45;&gt;Noderoot -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>Node2&#45;&gt;Noderoot</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M89.6,-32.5C81.43,-35.28 72.3,-38.4 63.62,-41.36\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"62.42,-38.07 54.08,-44.61 64.68,-44.69 62.42,-38.07\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M90.07,-32.34C82.07,-35.07 73.1,-38.12 64.53,-41.05\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"63.69,-37.98 55.35,-44.52 65.95,-44.6 63.69,-37.98\"/>\n",
        "</g>\n",
        "<!-- Node3 -->\n",
        "<g id=\"node4\" class=\"node\">\n",
@@ -716,8 +718,8 @@
        "<!-- Node3&#45;&gt;Node2 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>Node3&#45;&gt;Node2</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M179.6,-23.5C171.61,-23.5 162.69,-23.5 154.18,-23.5\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"154.08,-20 144.08,-23.5 154.08,-27 154.08,-20\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M180.07,-23.5C172.11,-23.5 163.18,-23.5 154.64,-23.5\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"154.74,-20 144.74,-23.5 154.74,-27 154.74,-20\"/>\n",
        "</g>\n",
        "</g>\n",
        "</svg>\n"
@@ -776,14 +778,14 @@
        "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
        "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
        " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
-       "<!-- Generated by graphviz version 2.50.0 (20211204.2007)\n",
+       "<!-- Generated by graphviz version 8.0.3 (20230416.2022)\n",
        " -->\n",
        "<!-- Title: g Pages: 1 -->\n",
        "<svg width=\"242pt\" height=\"110pt\"\n",
        " viewBox=\"0.00 0.00 242.00 110.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
        "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 106)\">\n",
        "<title>g</title>\n",
-       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-106 238,-106 238,4 -4,4\"/>\n",
+       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-106 238,-106 238,4 -4,4\"/>\n",
        "<!-- Noderoot -->\n",
        "<g id=\"node1\" class=\"node\">\n",
        "<title>Noderoot</title>\n",
@@ -800,22 +802,22 @@
        "<!-- Node1&#45;&gt;Noderoot -->\n",
        "<g id=\"edge1\" class=\"edge\">\n",
        "<title>Node1&#45;&gt;Noderoot</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M89.6,-74.5C81.43,-71.72 72.3,-68.6 63.62,-65.64\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"64.68,-62.31 54.08,-62.39 62.42,-68.93 64.68,-62.31\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M90.07,-74.66C82.07,-71.93 73.1,-68.88 64.53,-65.95\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"65.95,-62.4 55.35,-62.48 63.69,-69.02 65.95,-62.4\"/>\n",
        "</g>\n",
        "<!-- Node2 -->\n",
        "<g id=\"node3\" class=\"node\">\n",
        "<title>Node2</title>\n",
        "<polygon fill=\"white\" stroke=\"black\" points=\"90,-0.5 90,-46.5 144,-46.5 144,-0.5 90,-0.5\"/>\n",
        "<text text-anchor=\"middle\" x=\"117\" y=\"-31.3\" font-family=\"Times,serif\" font-size=\"14.00\">card</text>\n",
-       "<polyline fill=\"none\" stroke=\"black\" points=\"90,-23.5 144,-23.5 \"/>\n",
+       "<polyline fill=\"none\" stroke=\"black\" points=\"90,-23.5 144,-23.5\"/>\n",
        "<text text-anchor=\"middle\" x=\"117\" y=\"-8.3\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n",
        "</g>\n",
        "<!-- Node2&#45;&gt;Noderoot -->\n",
        "<g id=\"edge2\" class=\"edge\">\n",
        "<title>Node2&#45;&gt;Noderoot</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M89.6,-32.5C81.43,-35.28 72.3,-38.4 63.62,-41.36\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"62.42,-38.07 54.08,-44.61 64.68,-44.69 62.42,-38.07\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M90.07,-32.34C82.07,-35.07 73.1,-38.12 64.53,-41.05\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"63.69,-37.98 55.35,-44.52 65.95,-44.6 63.69,-37.98\"/>\n",
        "</g>\n",
        "<!-- Node3 -->\n",
        "<g id=\"node4\" class=\"node\">\n",
@@ -826,8 +828,8 @@
        "<!-- Node3&#45;&gt;Node2 -->\n",
        "<g id=\"edge3\" class=\"edge\">\n",
        "<title>Node3&#45;&gt;Node2</title>\n",
-       "<path fill=\"none\" stroke=\"black\" d=\"M179.6,-23.5C171.61,-23.5 162.69,-23.5 154.18,-23.5\"/>\n",
-       "<polygon fill=\"black\" stroke=\"black\" points=\"154.08,-20 144.08,-23.5 154.08,-27 154.08,-20\"/>\n",
+       "<path fill=\"none\" stroke=\"black\" d=\"M180.07,-23.5C172.11,-23.5 163.18,-23.5 154.64,-23.5\"/>\n",
+       "<polygon fill=\"black\" stroke=\"black\" points=\"154.74,-20 144.74,-23.5 154.74,-27 154.74,-20\"/>\n",
        "</g>\n",
        "</g>\n",
        "</svg>\n"
diff --git a/notebooks/tests/external_functions.ipynb b/notebooks/tests/external_functions.ipynb
index 99c63904ebd8b917caac8851b92611599722ebc0..3997880b68f03823556ed24240aa1fe5f1890099 100644
--- a/notebooks/tests/external_functions.ipynb
+++ b/notebooks/tests/external_functions.ipynb
@@ -31,10 +31,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"1.11.1-final\"}$"
+       "$\\text{\"1.12.0-final\"}$"
       ],
       "text/plain": [
-       "\"1.11.1-final\""
+       "\"1.12.0-final\""
       ]
      },
      "execution_count": 2,
@@ -54,10 +54,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"1.17.35\\\"\\n\"}$"
+       "$\\text{\"1.17.0.6+10\"}$"
       ],
       "text/plain": [
-       "\"1.17.35\\\"\\n\""
+       "\"1.17.0.6+10\""
       ]
      },
      "execution_count": 3,
@@ -77,10 +77,10 @@
     {
      "data": {
       "text/markdown": [
-       "$\\text{\"1125ea39af78125a39093c65a0af783b7636b362\"}$"
+       "$\\text{\"fef4b935b59d76e353ab67230f6206b15f903f4b\"}$"
       ],
       "text/plain": [
-       "\"1125ea39af78125a39093c65a0af783b7636b362\""
+       "\"fef4b935b59d76e353ab67230f6206b15f903f4b\""
       ]
      },
      "execution_count": 4,
@@ -123,10 +123,10 @@
     {
      "data": {
       "text/markdown": [
-       "$164878528$"
+       "$166963568$"
       ],
       "text/plain": [
-       "164878528"
+       "166963568"
       ]
      },
      "execution_count": 6,
@@ -151,19 +151,17 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "CommandExecutionException",
-     "evalue": ":eval: UNKNOWN: \nUnexpected error while parsing machine: \n\n\nAdditional information:  Fehler: Hauptklasse de.prob.cliparser.CliBParser konnte nicht gefunden oder geladen werden\nUrsache: java.lang.ClassNotFoundException: de.prob.cliparser.CliBParser\n\n\nJava B parser (probcliparser.jar) is missing from lib directory in:  /Users/Shared/Uni/SHK/ProB2/prob_prolog/\n\n",
+     "ename": "WithSourceCodeException",
+     "evalue": "de.prob.exception.ProBError: UNKNOWN\nProB returned error messages:\nError: Unexpected error while parsing machine: \nError: Additional information:  Fehler: Hauptklasse de.prob.cliparser.CliBParser konnte nicht gefunden oder geladen werden\nUrsache: java.lang.ClassNotFoundException: de.prob.cliparser.CliBParser\nInternal error: Java B parser (probcliparser.jar) is missing from lib directory in:  /Users/dgelessus/.prob/prob2-4.12.0/\nError: Unknown info field, known fields: prob-version prolog-version prob-revision prob-last-changed-date java-version java-command-path current-time",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[31m:eval: UNKNOWN: \u001b[0m",
-      "\u001b[1m\u001b[31mUnexpected error while parsing machine: \u001b[0m",
-      "\u001b[1m\u001b[31m\u001b[0m",
-      "\u001b[1m\u001b[31m\u001b[0m",
-      "\u001b[1m\u001b[31mAdditional information:  Fehler: Hauptklasse de.prob.cliparser.CliBParser konnte nicht gefunden oder geladen werden\u001b[0m",
+      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mUNKNOWN\u001b[0m",
+      "\u001b[1m\u001b[30m4 errors:\u001b[0m",
+      "\u001b[1m\u001b[31mError: Unexpected error while parsing machine: \u001b[0m",
+      "\u001b[1m\u001b[31mError: Additional information:  Fehler: Hauptklasse de.prob.cliparser.CliBParser konnte nicht gefunden oder geladen werden\u001b[0m",
       "\u001b[1m\u001b[31mUrsache: java.lang.ClassNotFoundException: de.prob.cliparser.CliBParser\u001b[0m",
-      "\u001b[1m\u001b[31m\u001b[0m",
-      "\u001b[1m\u001b[31m\u001b[0m",
-      "\u001b[1m\u001b[31mJava B parser (probcliparser.jar) is missing from lib directory in:  /Users/Shared/Uni/SHK/ProB2/prob_prolog/\u001b[0m"
+      "\u001b[1m\u001b[31mInternal error: Java B parser (probcliparser.jar) is missing from lib directory in:  /Users/dgelessus/.prob/prob2-4.12.0/\u001b[0m",
+      "\u001b[1m\u001b[31mError: Unknown info field, known fields: prob-version prolog-version prob-revision prob-last-changed-date java-version java-command-path current-time\u001b[0m"
      ]
     }
    ],
diff --git a/notebooks/tests/load_cell.ipynb b/notebooks/tests/load_cell.ipynb
index 786594324b89f6327f25c1f3e69a61c8eafa250b..c6c26a6ec458c0b5e38e1c540e0514bf50003060 100644
--- a/notebooks/tests/load_cell.ipynb
+++ b/notebooks/tests/load_cell.ipynb
@@ -252,16 +252,16 @@
    "outputs": [
     {
      "ename": "ProBError",
-     "evalue": "Prolog said no.\nProB returned error messages:\nError: Could not infer type of x (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)\nError: Identifier 'x' (local from duplicate) already declared at (Line:2 Col:14) (local from duplicate) (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)",
+     "evalue": "Prolog said no.\nProB returned error messages:\nError: Could not infer type of x (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)\nError: Identifier 'x' (local from duplicate) already declared at (Line:2 Col:14) (local from duplicate) (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)",
      "output_type": "error",
      "traceback": [
       "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mProlog said no.\u001b[0m",
       "\u001b[1m\u001b[30m2 errors:\u001b[0m",
-      "\u001b[1m\u001b[31mError: Could not infer type of x (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)\u001b[0m",
+      "\u001b[1m\u001b[31mError: Could not infer type of x (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)\u001b[0m",
       "\u001b[1m\u001b[30mMACHINE duplicate\u001b[0m",
       "\u001b[1m\u001b[30m    CONSTANTS x, \u001b[0m\u001b[1m\u001b[30m\u001b[41mx\u001b[0m\u001b[1m\u001b[30m\u001b[0m",
       "\u001b[1m\u001b[30m    PROPERTIES x : INT\u001b[0m",
-      "\u001b[1m\u001b[31mError: Identifier 'x' (local from duplicate) already declared at (Line:2 Col:14) (local from duplicate) (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)\u001b[0m",
+      "\u001b[1m\u001b[31mError: Identifier 'x' (local from duplicate) already declared at (Line:2 Col:14) (local from duplicate) (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:17 to 2:18)\u001b[0m",
       "\u001b[1m\u001b[30mMACHINE duplicate\u001b[0m",
       "\u001b[1m\u001b[30m    CONSTANTS x, \u001b[0m\u001b[1m\u001b[30m\u001b[41mx\u001b[0m\u001b[1m\u001b[30m\u001b[0m",
       "\u001b[1m\u001b[30m    PROPERTIES x : INT\u001b[0m"
@@ -283,22 +283,22 @@
    "outputs": [
     {
      "ename": "ProBError",
-     "evalue": "Prolog said no.\nProB returned error messages:\nError: Could not infer type of x (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:14 to 2:15)\nError: Type mismatch: Expected INTEGER, but was STRING in '\"string\" ^ \"string\" ^ \"string\"' (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:35 to 5:18)\nError: Type mismatch: Expected INTEGER, but was STRING in '\"string\"' (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:19 to 3:27)",
+     "evalue": "Prolog said no.\nProB returned error messages:\nError: Could not infer type of x (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:14 to 2:15)\nError: Type mismatch: Expected INTEGER, but was STRING in '\"string\" ^ \"string\" ^ \"string\"' (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:35 to 5:18)\nError: Type mismatch: Expected INTEGER, but was STRING in '\"string\"' (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:19 to 3:27)",
      "output_type": "error",
      "traceback": [
       "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mProlog said no.\u001b[0m",
       "\u001b[1m\u001b[30m3 errors:\u001b[0m",
-      "\u001b[1m\u001b[31mError: Could not infer type of x (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:14 to 2:15)\u001b[0m",
+      "\u001b[1m\u001b[31mError: Could not infer type of x (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:2:14 to 2:15)\u001b[0m",
       "\u001b[1m\u001b[30mMACHINE typeerrors\u001b[0m",
       "\u001b[1m\u001b[30m    CONSTANTS \u001b[0m\u001b[1m\u001b[30m\u001b[41mx\u001b[0m\u001b[1m\u001b[30m\u001b[0m",
       "\u001b[1m\u001b[30m    PROPERTIES 1 = \"string\" & 1 = (\"string\"\u001b[0m",
-      "\u001b[1m\u001b[31mError: Type mismatch: Expected INTEGER, but was STRING in '\"string\" ^ \"string\" ^ \"string\"' (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:35 to 5:18)\u001b[0m",
+      "\u001b[1m\u001b[31mError: Type mismatch: Expected INTEGER, but was STRING in '\"string\" ^ \"string\" ^ \"string\"' (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:35 to 5:18)\u001b[0m",
       "\u001b[1m\u001b[30m    CONSTANTS x\u001b[0m",
       "\u001b[1m\u001b[30m    PROPERTIES 1 = \"string\" & 1 = (\u001b[0m\u001b[1m\u001b[30m\u001b[41m\"string\"\u001b[0m",
       "\u001b[1m\u001b[30m\u001b[41m        ^ \"string\"\u001b[0m",
       "\u001b[1m\u001b[30m\u001b[41m        ^ \"string\"\u001b[0m\u001b[1m\u001b[30m)\u001b[0m",
       "\u001b[1m\u001b[30mEND\u001b[0m",
-      "\u001b[1m\u001b[31mError: Type mismatch: Expected INTEGER, but was STRING in '\"string\"' (/Users/Shared/Uni/SHK/ProB2/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:19 to 3:27)\u001b[0m",
+      "\u001b[1m\u001b[31mError: Type mismatch: Expected INTEGER, but was STRING in '\"string\"' (/Users/dgelessus/Uni/STUPS/ProB/ProB-2-Überprojekt/prob2-jupyter-kernel/notebooks/tests/(machine from Jupyter cell).mch:3:19 to 3:27)\u001b[0m",
       "\u001b[1m\u001b[30m    CONSTANTS x\u001b[0m",
       "\u001b[1m\u001b[30m    PROPERTIES 1 = \u001b[0m\u001b[1m\u001b[30m\u001b[41m\"string\"\u001b[0m\u001b[1m\u001b[30m & 1 = (\"string\"\u001b[0m",
       "\u001b[1m\u001b[30m        ^ \"string\"\u001b[0m"
diff --git a/notebooks/tests/modelcheck.ipynb b/notebooks/tests/modelcheck.ipynb
index 6f0e71ebbdd9fd0dce321d7626e5bcf49ea8c1ae..21958a1bb3c702fe04f0a45d331e72dd3d03fd94 100644
--- a/notebooks/tests/modelcheck.ipynb
+++ b/notebooks/tests/modelcheck.ipynb
@@ -60,7 +60,7 @@
     {
      "data": {
       "text/plain": [
-       "0.300 sec, 36 of 36 states processed, 156 transitions"
+       "0.678 sec, 36 of 36 states processed, 156 transitions"
       ]
      },
      "metadata": {},
@@ -109,7 +109,7 @@
     {
      "data": {
       "text/plain": [
-       "0.268 sec, 57 of 316 states processed, 416 transitions"
+       "0.827 sec, 65 of 360 states processed, 478 transitions"
       ]
      },
      "metadata": {},
@@ -166,7 +166,7 @@
     {
      "data": {
       "text/plain": [
-       "21.538 sec, 17753 of 17753 states processed, 185145 transitions"
+       "44.633 sec, 17753 of 17753 states processed, 185145 transitions"
       ]
      },
      "metadata": {},
diff --git a/notebooks/tests/pref.ipynb b/notebooks/tests/pref.ipynb
index 416a27b4eb60148e196086f334c9fbab4df77890..06d7ad524e798b211728befd158efd6aefaf19d9 100644
--- a/notebooks/tests/pref.ipynb
+++ b/notebooks/tests/pref.ipynb
@@ -71,6 +71,7 @@
        "ALLOY_USE_IMPLEMENTABLE_INTEGERS = false\n",
        "ASSERT_CHECKING = true\n",
        "ATELIERB_KRT_PATH = krt\n",
+       "AUTO_DETECT_THEORY_MAPPING = false\n",
        "BBRESULTS = false\n",
        "BOOL_AS_PREDICATE = false\n",
        "BUGLY = false\n",
@@ -135,11 +136,13 @@
        "DOT_PROJECTION_LABEL_LIMIT = 75\n",
        "DOT_PROJECTION_NON_DEF_COL = dashed\n",
        "DOT_PROJECTION_NON_DET_COL = #806040\n",
+       "DOT_PROJECTION_ONLY_EXPLORED_NODES = false\n",
        "DOT_PROP = false\n",
        "DOT_ROOT = true\n",
        "DOT_ROOT_SHAPE = invtriangle\n",
        "DOT_SCOPE_LIMIT_COL = gray\n",
        "DOT_SHOW_OP_READ_WRITES = true\n",
+       "DOT_TRANS_IDS = false\n",
        "DOT_USE_CONSTANTS = true\n",
        "DOT_USE_UNICODE = true\n",
        "DOT_VARIABLE_MODIFICATION_HIDE_ONLY_WRITTEN = false\n",
@@ -174,6 +177,7 @@
        "MAX_DISPLAY_SET = 100\n",
        "MAX_INITIALISATIONS = 4\n",
        "MAX_OPERATIONS = 10\n",
+       "MAX_TRACES = 100\n",
        "MC_DC_Level = 2\n",
        "MEMO = false\n",
        "MEMOIZE_FUNCTIONS = false\n",
@@ -194,9 +198,9 @@
        "PP_SEQUENCES = false\n",
        "PROB2_TRACE_FILE = \n",
        "PROB2_TRACE_FILE_UNIQUE = false\n",
-       "PROB_LASTCHANGED_INFO = Wed Dec 29 13:14:39 2021 +0100\n",
-       "PROB_REVISION_INFO = 1125ea39af78125a39093c65a0af783b7636b362\n",
-       "PROB_VERSION_INFO = 1.11.1-final\n",
+       "PROB_LASTCHANGED_INFO = Wed Apr 5 14:57:01 2023 +0200\n",
+       "PROB_REVISION_INFO = fef4b935b59d76e353ab67230f6206b15f903f4b\n",
+       "PROB_VERSION_INFO = 1.12.0-final\n",
        "PROOF_INFO = true\n",
        "RAISE_ABORT_IMMEDIATELY = false\n",
        "RANDOMISED_RESTART_INIT = false\n",
@@ -227,6 +231,7 @@
        "SYMBOLIC_MC_TRY_OTHER_SOLVERS = false\n",
        "SYMMETRY_MODE = off\n",
        "SYNTAX_HIGHLIGHT = true\n",
+       "TABLE_COLUMN_LIMIT = 100\n",
        "TIME_OUT = 2500\n",
        "TK_CUSTOM_STATE_VIEW_FONT_NAME = \n",
        "TK_CUSTOM_STATE_VIEW_FONT_SIZE = 0\n",
@@ -234,6 +239,7 @@
        "TK_CUSTOM_STATE_VIEW_STRING_PADDING = 10\n",
        "TK_CUSTOM_STATE_VIEW_VISIBLE = true\n",
        "TLC_WORKERS = 2\n",
+       "TRACES_TIME_OUT = 2147483646\n",
        "TRACE_INFO = false\n",
        "TRACE_UPON_ERROR = false\n",
        "TRY_ATELIERB_PROVERS = false\n",
@@ -246,7 +252,9 @@
        "WARN_IF_DEFINITION_HIDES_VARIABLE = true\n",
        "WD_ANALYSIS_FOR_ANIMATION = true\n",
        "WD_IGNORE_EXTERNAL = false\n",
-       "XML_ENCODING = auto\n"
+       "WD_IGNORE_FINITE_POS = false\n",
+       "XML_ENCODING = auto\n",
+       "Z3_SOLVE_FOR_ANIMATION = true\n"
       ]
      },
      "execution_count": 2,
diff --git a/notebooks/tests/solve.ipynb b/notebooks/tests/solve.ipynb
index 1f1f91baacfcf6f28d4cba907111078d22afd073..75afa36ef8404da3ac7e720e86c20709a701e796 100644
--- a/notebooks/tests/solve.ipynb
+++ b/notebooks/tests/solve.ipynb
@@ -16,8 +16,8 @@
        "\n",
        "The following solvers are currently available:\n",
        "\n",
+       "* `cdclt`\n",
        "* `cvc4`\n",
-       "* `dpllt`\n",
        "* `kodkod`\n",
        "* `prob`\n",
        "* `smt_supported_interpreter`\n",
@@ -31,8 +31,8 @@
        "\n",
        "The following solvers are currently available:\n",
        "\n",
+       "* `cdclt`\n",
        "* `cvc4`\n",
-       "* `dpllt`\n",
        "* `kodkod`\n",
        "* `prob`\n",
        "* `smt_supported_interpreter`\n",
@@ -125,13 +125,25 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "WithSourceCodeException",
-     "evalue": "de.prob.exception.PrologException: Unhandled exception thrown from Prolog: (error(existence_error(procedure,:(z3interface,/(pop_frame,0))),existence_error($@(:(z3interface,pop_frame),4545727948),0,procedure,:(z3interface,/(pop_frame,0)),0)))\n",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mUnhandled exception thrown from Prolog: (error(existence_error(procedure,:(z3interface,/(pop_frame,0))),existence_error($@(:(z3interface,pop_frame),4545727948),0,procedure,:(z3interface,/(pop_frame,0)),0)))",
-      "\u001b[0m"
-     ]
+     "data": {
+      "text/markdown": [
+       "$\\mathit{TRUE}$\n",
+       "\n",
+       "**Solution:**\n",
+       "* $\\mathit{xx} = 3$\n",
+       "* $\\mathit{yy} = 4$"
+      ],
+      "text/plain": [
+       "TRUE\n",
+       "\n",
+       "Solution:\n",
+       "\txx = 3\n",
+       "\tyy = 4"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -144,13 +156,25 @@
    "metadata": {},
    "outputs": [
     {
-     "ename": "WithSourceCodeException",
-     "evalue": "de.prob.exception.ProBError: ProB reported Errors\nProB returned error messages:\nInternal error: Call for event start_solving failed. init_smt_supported_interpreter",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mProB reported Errors\u001b[0m",
-      "\u001b[1m\u001b[31mInternal error: Call for event start_solving failed. init_smt_supported_interpreter\u001b[0m"
-     ]
+     "data": {
+      "text/markdown": [
+       "$\\mathit{TRUE}$\n",
+       "\n",
+       "**Solution:**\n",
+       "* $\\mathit{xx} = 3$\n",
+       "* $\\mathit{yy} = 4$"
+      ],
+      "text/plain": [
+       "TRUE\n",
+       "\n",
+       "Solution:\n",
+       "\txx = 3\n",
+       "\tyy = 4"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
     }
    ],
    "source": [
@@ -196,11 +220,10 @@
    "outputs": [
     {
      "ename": "WithSourceCodeException",
-     "evalue": "de.prob.exception.ProBError: NOT-INITIALISED\nProB returned no error messages.",
+     "evalue": "de.prob.exception.ProBError: NOT-INITIALISED",
      "output_type": "error",
      "traceback": [
-      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mNOT-INITIALISED\u001b[0m",
-      "\u001b[1m\u001b[30mProB returned no error messages.\u001b[0m"
+      "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mNOT-INITIALISED\u001b[0m"
      ]
     }
    ],
diff --git a/notebooks/tests/time.ipynb b/notebooks/tests/time.ipynb
index be735ee74169e7ba48882c54ec27d836e913429c..d574fda1d312842dcbfc3372c67a483f926c0f76 100644
--- a/notebooks/tests/time.ipynb
+++ b/notebooks/tests/time.ipynb
@@ -51,10 +51,10 @@
     {
      "data": {
       "text/markdown": [
-       "Execution time: 1.056192286 seconds"
+       "Execution time: 1.024570750 seconds"
       ],
       "text/plain": [
-       "Execution time: 1.056192286 seconds"
+       "Execution time: 1.024570750 seconds"
       ]
      },
      "metadata": {},
@@ -90,10 +90,10 @@
     {
      "data": {
       "text/markdown": [
-       "Execution time: 0.378675290 seconds"
+       "Execution time: 0.419384167 seconds"
       ],
       "text/plain": [
-       "Execution time: 0.378675290 seconds"
+       "Execution time: 0.419384167 seconds"
       ]
      },
      "metadata": {},
diff --git a/notebooks/tests/type.ipynb b/notebooks/tests/type.ipynb
index 3684dc13d9a25291fa0d2a9c18a1f92613c29db2..86e8bc657f98e9202a8612806ce4cf5fca2f958a 100644
--- a/notebooks/tests/type.ipynb
+++ b/notebooks/tests/type.ipynb
@@ -245,11 +245,11 @@
    "outputs": [
     {
      "ename": "WithSourceCodeException",
-     "evalue": "de.prob.exception.ProBError: Type errors in formula\nProB returned error messages:\nError: Type mismatch: Expected INTEGER, but was POW(_A) in '{}' (:1:4 to 1:6)",
+     "evalue": "de.prob.exception.ProBError: Type errors in formula\nProB returned error messages:\nError: Type mismatch: Expected INTEGER, but was POW(_A) in 'empty_set' (:1:4 to 1:6)",
      "output_type": "error",
      "traceback": [
       "\u001b[1m\u001b[30mError from ProB: \u001b[0m\u001b[1m\u001b[31mType errors in formula\u001b[0m",
-      "\u001b[1m\u001b[31mError: Type mismatch: Expected INTEGER, but was POW(_A) in '{}' (:1:4 to 1:6)\u001b[0m",
+      "\u001b[1m\u001b[31mError: Type mismatch: Expected INTEGER, but was POW(_A) in 'empty_set' (:1:4 to 1:6)\u001b[0m",
       "\u001b[1m\u001b[30m1 + \u001b[0m\u001b[1m\u001b[30m\u001b[41m{}\u001b[0m\u001b[1m\u001b[30m\u001b[0m"
      ]
     }
diff --git a/notebooks/tests/version.ipynb b/notebooks/tests/version.ipynb
index fc15096cd61dccea3c120db1743d7e0bd76b6742..212f4baa94f0e7f0f33ecbc5dfbca4c0934b2d43 100644
--- a/notebooks/tests/version.ipynb
+++ b/notebooks/tests/version.ipynb
@@ -36,13 +36,13 @@
     {
      "data": {
       "text/plain": [
-       "ProB 2 Jupyter kernel: 1.2.1-SNAPSHOT (2aaa99bab781d6eca5a2b3388cca76b412fd52f6)\n",
-       "ProB 2: 3.15.0 (6ee6df4eab62d20df40c36cd42108b62962ec41b)\n",
-       "ProB B parser: 2.9.32 (7306d13499ba281a6e336c006d9fb23204624daa)\n",
+       "ProB 2 Jupyter kernel: 1.3.1-SNAPSHOT (b960640e155fc1441104e499894acd14e8f0fc07)\n",
+       "ProB 2: 4.12.0 (0356aaca15fde27915b8ab15c35a198fd381c9cd)\n",
+       "ProB B parser: 2.12.3 (99a64151f3bc82f987258619161831a8b9a7df01)\n",
        "ProB CLI:\n",
-       "\t1.11.1-final (1125ea39af78125a39093c65a0af783b7636b362)\n",
-       "\tLast changed: Wed Dec 29 13:14:39 2021 +0100\n",
-       "\tProlog: SICStus 4.7.0 (x86_64-darwin-18.7.0): Wed Jul  7 17:07:32 CEST 2021"
+       "\t1.12.0-final (fef4b935b59d76e353ab67230f6206b15f903f4b)\n",
+       "\tLast changed: Wed Apr 5 14:57:01 2023 +0200\n",
+       "\tProlog: SICStus 4.7.1 (x86_64-darwin-18.7.0): Fri Jan 21 19:45:28 CET 2022"
       ]
      },
      "execution_count": 2,